我们在 Symfony 5 项目中使用 Symfony Messenger 与 RabbitMQ 集成。在 Symfony 中发送消息时它工作正常,但我需要能够使用 Messenger 组件从一些不是用 Symfony 框架构建的遗留 PHP 应用程序发送消息。
在 Symfony 下,它通过注入 MessageBusInterface 来处理所有的魔法,我需要做的就是这样:
public function processTestMessage(MessageBusInterface $bus)
{
$bus->dispatch(new TestMessage('Hello World!');
}
Run Code Online (Sandbox Code Playgroud)
我需要以某种方式实例化我自己的版本$bus,它将以与 Symfony 相同的方式发送 AMQP 消息。我一直在尝试重新创建 Symfony 在幕后为实现这一目标所做的一切,但未能将所有细节放在一起。
问题的关键是创建我自己的SendMessageMiddleware,与 Symfony 做同样的事情。之后,很简单:
$sendersLocator = ???
$eventDispatcher = ???
$sendMessageMiddleware = new($sendersLocator, $eventDispatcher);
$bus = new MessageBus([$sendMessageMiddleware]);
Run Code Online (Sandbox Code Playgroud)
有没有人有使用 Messenger 组件在 Symfony 之外发送 AMQP 消息的工作代码示例?