通知外部symfony2应用程序事件

时间:2016-05-13 19:19:56

标签: php symfony events

我在不同的服务器上运行了两个Symfony2应用程序。我需要一种机制来通知一个应用程序在第二个应用程序中的事件。我不知道对我所知的方法不满意:

  1. 签名请求

    我可以在活动中从我的第二个应用程序调用安全控制器操作。但是这个解决方案的缺点是如果其他应用程序关闭,事件就会丢失。我希望应用程序能够在停机后立即处理事件。

  2. 工作人员队列

    使用亚马逊的SQS队列可以满足我的要求。但众所周知,工人会记忆力。

  3. 我想为此实现最佳实施。我不了解许多服务交互模式。有人可以帮帮我吗?

2 个答案:

答案 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 messagesregister processors订阅这些主题。每当您向主题发送消息(无论什么应用程序无关紧要)时,它都会传递给所有对它感兴趣的应用程序。