2016-05-13 3 views
0

У меня есть два приложения Symfony2, работающих на разных серверах. Мне нужен механизм для уведомления одного приложения о событии во втором приложении. Я как-то не доволен подходами известных мне, которые являются:Способы уведомления внешнего приложения symfony2 о событии

  1. Подписанный запрос

    Я могу назвать безопасное действие контроллера из моего второго приложения на мероприятии. Но недостатком этого решения является то, что событие теряется, если другое приложение не работает. Я хочу, чтобы приложение могло обрабатывать события каждый раз, когда он появляется после простоя.

  2. очереди Worker

    Использование очереди SQS Амазонки будет работать нормально для моего требования. Но работники, как известно, живут в памяти.

Я хочу добиться наилучшей реализации для этого. Я не знаю многих моделей взаимодействия служб. Может кто-нибудь, пожалуйста, помогите мне здесь?

ответ

0

Есть много альтернатив Amazon SQS - http://queues.io/

RabbitMQ хорошо один. Если ваши сообщения маленькие, и у вас есть частная сеть, вы можете использовать Beanstalkd - это очень быстро и просто.

Есть пакеты для Symfony вы можете использовать

+0

Спасибо за ваш ответ. Существуют ли какие-либо другие механизмы взаимодействия для взаимодействия служб? – Gargee

0

Что вы ищете является message bus. Вы можете легко поговорить друг с другом с библиотекой enqueue. Я написал blog post о Symfony < -> Интеграция Magento через шину сообщений.

Предположим, у вас есть приложение Foo и Bar. Вы должны установить очередь и транспорт (это 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 подписавшись их темам. Всякий раз, когда вы отправляете сообщение на эту тему (не имеет значения, какое приложение), оно будет доставлено всем заинтересованным в нем приложениям.

Смежные вопросы