新在Symfoob娱乐下载ny 4.1:信使组件
2018年3月28日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
在Syob娱乐下载mfony 4.1中,我们添加了一个新的通讯组件帮助应用程序发送和接收消息来/从其他应用程序或通过消息队列。它提供了一个消息总线和一些路由功能发送消息在你需要的任何服务,就像在一个控制器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/ / src /控制器/ DefaultController.php名称空间应用程序\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\控制器;使用ob娱乐下载\组件\信使\MessageBusInterface;使用ob娱乐下载\组件\路由\注释\路线;类DefaultController扩展控制器{/ * * *@Route(" name = "主页")* /公共函数指数(MessageBusInterface美元公共汽车){/ /……美元公共汽车- >调度(新MyMessage ());}}
发送消息是第一部分的过程。然后你需要创建一个“消息处理程序”,它作为服务注册messenger.message_handler
标签接收消息并做些什么:
1 2 3 4 5 6 7 8 9 10
/ / src / MessageHandler / MyMessageHandler.php名称空间应用程序\MessageHandler;类MyMessageHandler{公共函数__invoke(MyMessage美元消息){/ /做一些消息}}
队列和AMQP适配器
组件包括一个AMQP适配器准备与最流行的AMQP经纪人沟通,比如RabbitMQ。沟通与排队系统或第三方(卡夫卡,Amazon SQS,谷歌Pub / sub)委托给图书馆排队的适配器:
1 2 3 4 5
#配置/包/ messenger.yaml框架:信使:适配器:默认值:“amqp: / /客人:guest@localhost: 5672 / % 2 f /信息”
这种配置允许路由消息messenger.default_adapter
同时配置messenger.default_sender
和messenger.default_receiver
当使用路由和消费信息。
路由
而不是调用处理程序,你也可以你的消息路由到一个或多个发送者:
1 2 3 4 5 6 7 8 9 10 11 12
#配置/包/ messenger.yaml框架:信使:路由:#这消息路由到一个发送者“我的消息\ \消息”:messenger.default_sender#这消息路由到多个发送者“我的消息\ \ ToBeSentToTwoSenders”:[messenger.default_sender,messenger.audit_sender]#的消息路由到默认发送者‘*’:messenger.default_sender
一旦你的路由信息,你可以使用它们信使:使用消息
命令:
1
美元bin /控制台信使:使用消息messenger.default_receiver
定义的消息总线通讯组件是基于中间件。你可以阅读更多关于它和其他特性的最新草案的信使它的文档欧宝官网下载app。
发表在#生活在边缘
评论
Yonel Ceruto
3月28日表示,2018年在16:01
Greeat !谢谢你!
这个组件SimpleBus看起来像一个重塑。有些课程就是原始的确切副本马提亚的工作。或者在SimpleBus MessageHandlerResolver,在新组件叫做HandlerLocatorInterface信使。
我不是在指责什么的。这是OSS和从其他地方是好想法,但是这样一个组件的点是什么?为什么不直接导致SimpleBus呢?有独白,因此不需要Symfony /记录器。ob娱乐下载有一个原则,没有人希望Symfony / Db。ob娱乐下载
此外queue-interop。新的信使组件可能只是另一个实现。类似symfony /缓存PSob娱乐下载R-6的实现。
我不是在指责什么的。这是OSS和从其他地方是好想法,但是这样一个组件的点是什么?为什么不直接导致SimpleBus呢?有独白,因此不需要Symfony /记录器。ob娱乐下载有一个原则,没有人希望Symfony / Db。ob娱乐下载
此外queue-interop。新的信使组件可能只是另一个实现。类似symfony /缓存PSob娱乐下载R-6的实现。
排队/ enqueue-bundle有关吗?我看到一个具有一定在桥上医生。它将被弃用该组件吗?
也许是一个错误,但不是Amazon SQS ?
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now