我在不同的服务器上运行了两个Symfony2应用程序。我需要一种机制来通知一个应用程序在第二个应用程序中的事件。我不知道对我所知的方法不满意:
签名请求
我可以在活动中从我的第二个应用程序调用安全控制器操作。但是这个解决方案的缺点是如果其他应用程序关闭,事件就会丢失。我希望应用程序能够在停机后立即处理事件。
工作人员队列
使用亚马逊的SQS队列可以满足我的要求。但众所周知,工人会记忆力。
我想为此实现最佳实施。我不了解许多服务交互模式。有人可以帮帮我吗?
答案 0 :(得分:0)
Amazon SQS有很多替代方案 - http://queues.io/
RabbitMQ 很好。如果您的消息很小并且您拥有专用网络,则可以使用 Beanstalkd - 它非常快速而简单。
您可以使用Symfony的捆绑包
答案 1 :(得分:0)
您要找的是message bus。您可以使用enqueue库轻松地与对方进行交流。我写了一篇blog post关于Symfony< - > Magento通过消息总线集成。
让我们说你有申请Foo和Bar。您必须安装enqueue和传输(suppports message bus)。 RabbitMQ支持它,所以我选择了amqp传输。
安装:
composer require enqueue/enqueue-bundle enqueue/amqp-ext
配置:
# app/config/config.php
enqueue:
transport:
default: 'amqp://'
client:
app_name: 'foo' # for the foo app
app_name: 'bar' # for the bar app
现在,您可以send event messages和register processors订阅这些主题。每当您向主题发送消息(无论什么应用程序无关紧要)时,它都会传递给所有对它感兴趣的应用程序。