Протокол для извлечения и публикации сообщений (очереди сообщений без публикации / подписки) - PullRequest
0 голосов
/ 30 марта 2011

Существует ли решение для обмена сообщениями (предпочтительно с поддержкой Python), которое я могу использовать как почтовый ящик, например, получать сообщения из любой заданной очереди без подписки?Я предполагаю, что очереди сообщений могут работать, но мне придется многократно подписываться, получать сообщения из очереди, а затем отписываться, что не кажется оптимальным.

Ответы [ 3 ]

0 голосов
/ 30 марта 2011

RabbitMQ - http://www.rabbitmq.com

ZeroMQ - http://www.zeromq.org

Amazon SQS - http://aws.amazon.com/sqs

Все три имеют библиотеки для python.Первые два бесплатны.Затраты на SQS довольно низки, если вы не отправляете и не получаете миллионы сообщений, и он обладает преимуществами высокой доступности и избавляет вас от необходимости управлять им самостоятельно.

В отношении подписки и отмены подписки, если вы 'вы тянете из очереди вместо того, чтобы получать в очередь push-сообщения (pub / sub), которые вы не подписываете и не отписываетесь.Во всех приведенных выше примерах вы не несете никаких накладных расходов.

0 голосов
/ 30 марта 2011

Большинство (если не все) решений для обмена сообщениями поддерживают два режима обмена сообщениями

  • Опубликовать \ Подписаться - то есть вам необходимо подписаться, чтобы получить сообщение.

  • Очередь - одна сторона отправляет сообщение в очередь, другая читает сообщение из очереди - подписка не требуется, и сообщение используется при чтении.

На самом деле стандартная организация очередей встречается чаще, чем публикация подписки - у вас больше шансов найти инструмент, поддерживающий организацию очереди, но не pub \ sub, а затем найти инструмент, который поддерживает публикацию \ sub, но не ставит в очередь.

Вынаверное ищем 2-й режим

0 голосов
/ 30 марта 2011

Вариантов довольно много. Вот два:

  1. Взгляните на Redis . Для него есть две клиентские библиотеки Python (см. redis-py и txRedis ). Операцию, которую вы описываете (операции с почтовыми ящиками в очередях), можно смоделировать, выполнив blpop в списке в Redis.

  2. Другой вариант - RabbitMQ . Для него есть немало клиентских библиотек Python py-ampqlib и txAMQP . Вы можете рассматривать это как очередь, похожую на почтовый ящик, выполнив basic.get и basic.ack (см. эту ссылку для получения дополнительной информации).

...