Реализация запроса-ответа JMS. Очередь против темы? - PullRequest
4 голосов
/ 31 января 2012

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

Что я хотел бы знать: (1) каков рекомендуемый (или наиболее распространенный) способ и (2) как соотносятся различные перестановки?

Далее правильнее сказать а. «Отправить сообщение в очередь» или б. "Отправить сообщение через очередь"?

Ура!

Ответы [ 2 ]

4 голосов
/ 31 января 2012

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

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

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

Темы могут делать постоянство, но правила более странные и редко, что вы на самом деле хотите.

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

1 голос
/ 20 января 2013

Кроме того, с помощью очереди вы можете иметь несколько подписчиков, обрабатывающих сообщения, так что это ребенок встроенного loadbalancer. Вы не можете сделать это легко с темой.

...