В чем смысл "прочного" атрибута для JMS Queue в JBoss 7 с HornetQ? - программирование
Подтвердить что ты не робот

В чем смысл "прочного" атрибута для JMS Queue в JBoss 7 с HornetQ?

При конфигурировании очередей JMS на JBoss 7 с HornetQ (на основе конфигурации standalone-full.xml) я заметил атрибут "durable".

enter image description here

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

Этот атрибут в JBoss 7 HornetQ относится к временным очередям? Или этот атрибут относится к неким временным непроизводительным очередям?

4b9b3361

Ответ 1

После краткого исследования я придумал несколько выводов. Все наблюдения основаны на JBoss 7.1.1.Final с сервером HornetQ 2.2.13.Final.

  • Нестойкая очередь не является временной очередью. Он существует до тех пор, пока он не будет удален вручную.

  • Все сообщения, отправленные в нерабочую очередь, исчезают при перезапуске/сбое поставщика JMS (режимы доставки, то есть PERSISTENT/NON_PERSISTENT из отправленных сообщений игнорируются).

  • Значение элемента заголовка JMSDeliveryMode сообщений не изменяется. В частности, если сообщение было отправлено с режимом доставки PERSISTENT в недолговечную очередь, флаг устанавливается в PERSISTENT, даже если неопределенная очередь не сохраняется в сообщении (она теряется в случае перезапуска/отказа JMS-провайдера).

С клиентской стороны это кажется немного тревожной перспективой, поскольку у отправителя нет возможности узнать, не будет ли соблюден заявленный режим доставки сообщения из-за проблемного значения "недолговечного" ' очередь.

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

Ответ 2

Я чувствую, что слово "Durable" более применимо к темам, чем к очередям. Долгосрочная подписка - это та, где публикации для подписчика хранятся поставщиком сообщений, когда этот абонент не работает. Как только абонент станет активным, эти сохраненные сообщения будут доставлены этому подписчику. Для не-Просроченных подписчиков не будут получать публикации, если они неактивны.

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

Ответ 3

Долгосрочная подписка в JMS означает, что если абонент отключится и снова подключится к JMS-адресу (очереди или теме), он получит все сообщения, которые были отправлены в пункт назначения до сих пор и еще не истек.