2012-05-14 3 views
4

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

+0

Было бы полезно, если бы вы дали немного более подробную информацию, то есть почему вам нужно последнее состояние, почему вы не можете ждать, пока не будет транслировано следующее состояние. Как вы настраиваете свои очереди, являются ли сообщения постоянными, являются ли автоответчики очередей? Больше информации = более полезные ответы. – robthewolf

+0

Зачем вам нужно знать, почему мне нужно последнее состояние? Я не настраиваю очереди, я спрашиваю, как это сделать ... Я новичок MQ. Thxs. –

ответ

4

Использовать пользовательский обмен данными последнего значения: , например. https://github.com/squaremo/rabbitmq-lvc-plugin

Последнее меновая кэширование:

Это довольно простая реализация кэш последнего значения с помощью штыревые типа обмена RabbitMQ оснащены.

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

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

+0

Я полагаю, что это работало лучше моих предложений? – robthewolf

+0

@robthewolf кажется немного более согласованным с моим оригинальным вопросом. Все равно, спасибо за помощь. –

+0

Я посмотрел на него, и я согласен. Я также искал эту функциональность, так что это выглядит лучше, так как это именно последнее сообщение. – robthewolf

1

Возможно с Recent History Custom Exchange. В нем говорится, что он будет помещать последние 20 сообщений в очередь, поэтому, если он настраивается, вы можете изменить это на последнее сообщение, и все готово.

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

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