Есть ли решение с сервисной шиной, где потребители не потребляют события? (несколько потребителей получают одно и то же событие) - PullRequest
1 голос
/ 13 ноября 2009

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

Однако при чтении документации похоже, что производитель должен указать «конечную точку» при отправке сообщения.

Я бы предпочел, чтобы все было наоборот: мой продюсер публикует события «начало задания импорта», «завершение задания импорта» и т. Д. и любой потребитель, который заинтересован в определенных классах событий, может подписаться и получить их. Однако потребитель не должен использовать событие, поскольку оно больше не отправляется другим подписчикам.

Какой продукт лучше всего подойдет для такой недвижимости?

Ограничения: - Должен быть интерфейс как минимум для .Net и php - Должно работать за пределами машин

Спасибо

Ответы [ 3 ]

2 голосов
/ 13 ноября 2009

Я думаю, что вы в настоящее время публикуете в очередь, что, как правило, означает, что 1 потребитель будет, ну, в общем, использовать сообщение, и событие будет обработано. Если вам нужно, чтобы события получали более одного потребителя, вам следует использовать темы.

При использовании Темы все подписанные пользователи получают опубликованное вами событие.

Взгляните на это: http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html

0 голосов
/ 10 октября 2011

Если вы согласны с размещением службы в облаке, ServiceBus от Microsoft включает этот сценарий через модель «Тема / Подписка». Согласно этой модели, ваш продюсер отправляет сообщение в тему (очередь для всех практических целей), и любой, кто подписан на нее, получит копию сообщения. Для более сложных сценариев вы можете даже создать правила и фильтры, чтобы определить, какие клиенты получают какие сообщения. Для этого есть .NET и REST API.

Вы можете проверить полное описание возможностей здесь . Документ содержит пример кода о том, как использовать для этого клиентские библиотеки. Также есть примеров о том, как использовать servicebus с Java и PHP, на случай, если вам потребуется поддержка этих языков.

0 голосов
/ 13 ноября 2009

Не знаю о лучшем, но я использовал D-Bus в проекте, где была такая же задача, как ваша. Проверьте документацию.

Ссылки на реализации:

C # реализация D-Bus

Связывание PHP и DBus

Надеюсь, это поможет.

...