Какое программное обеспечение для организации очередей сообщений с открытым исходным кодом обеспечивает долговечность при строгом порядке? - PullRequest
4 голосов
/ 16 июня 2011

Нам нужен RabbitMQ, который фактически работает как очередь и не делает этого .Сообщения должны оставаться в начале очереди, пока клиент явно их не исключит.

Кажется, что это очень простой сценарий, но по какой-то причине я не могу найти брокера, который бы его поддерживал.ОС Windows.

Ответы [ 3 ]

2 голосов
/ 17 июня 2011

Apache Qpid , вероятно, ваш лучший вариант. Из всех очередей сообщений эта имеет ряд интересных вещей, включая строгий порядок .

2 голосов
/ 27 февраля 2012

RabbitMQ также поддерживает строгое упорядочение начиная с версии 2.7.0 и поэтому должно быть вариантом для вашего сценария снова.

2 голосов
/ 17 июня 2011

Если проблема заключается только в одном сообщении, почему бы не записать его в файл (и очистить файл) перед обработкой сообщения.После получения сообщения удалите файл.

И если вас беспокоит сбой брокера сообщений, первым делом обновите его до RabbitMQ 2.4.1, работающего на Erlang R14B02.Второй шаг - это кластеризация, чтобы у вас было несколько серверов, выступающих в качестве брокера MQ.И только тогда измените свое приложение, чтобы отслеживать сообщения, которые были обработаны, либо по отметке времени, либо путем сохранения идентификаторов сообщений.Затем, если RabbitMQ запрашивает сообщение, вы уже получите его, обработаете и запомните.Когда это произойдет во второй раз, вы его проигнорируете.

Возможно, вам придется установить предварительную выборку в 0, чтобы это работало правильно.

И есть и другая альтернатива.Вы можете написать свой собственный плагин RabbitMQ, чтобы обеспечить точное поведение, которое вам нужно.Erlang может показаться сложным на первый взгляд, но для опытного программиста, который уже выучил несколько языков, это не так сложно выучить.В частности, если у вас есть кто-то с опытом функционального программирования на таких языках, как Haskell или CAML, он быстро подберет достаточное количество Erlang для выполнения этой работы.

Из-за внутренней модели процессов передачи сообщений Erlang плагины RabbitMQ могутпо сути дела все, что они хотят.Не существует конкретного API-интерфейса для ограниченных плагинов, которому они должны соответствовать.

Другими словами, если RabbitMQ делает только 99% того, что вам нужно, считайте, что вам повезло, что с небольшим объемом работы вы можете использовать эти 99% и достичь всего, что вам нужно.Но для того, чтобы сделать это, вы должны отказаться от идеи, что RabbitMQ - это еще один пакет, который вы устанавливаете с помощью инструментов установки пакетов вашей системы.В таких случаях, как ваш, RabbitMQ следует рассматривать как критически важный инструмент, и вы должны установить Erlang и RabbitMQ из исходного кода и настроить их в соответствии с вашими потребностями, не позволяя вашей ОС ограничивать вас.

...