Тема JMS против очередей
Мне было интересно, в чем разница между очередью JMS и темой JMS.
с ActiveMQ страница, Он скажет
темы
в JMS тема реализует публикация и подписка семантика. Когда вы публикуете сообщение, оно отправляется всем подписчикам, которые являются
заинтересовался-значит ноль многим подписчикам получит копию
сообщение. Только подписчики, которые имели активную подписку в то время
брокер получает сообщение получит копию сообщения.
очереди
очередь JMS реализует балансировки нагрузки семантика. Одно сообщение будет получено ровно одним потребителем. Если нет
потребители, доступные в момент отправки сообщения, будут сохранены
пока не будет доступен потребитель, который может обработать сообщение. Если
потребитель получает сообщение и не подтверждает его перед закрытием
затем сообщение будет повторно доставлено еще один потребитель. Очередь может
есть много потребителей с сообщениями нагрузки в наличии
потребитель.
Я ищу "вещь", которая будет отправлять копию сообщения каждому подписчику в той же последовательности, в которой сообщение было получено брокером ActiveMQ.
какие мысли?
7 ответов:
Это означает, что тема уместна. Очередь означает, что сообщение отправляется одному и только одному возможному подписчику. Тема идет к каждому абоненту.
A тема JMS - Это тип назначения в модели распределения 1 ко многим. Такое же опубликованное сообщение получают все потребляющие подписчики. Вы также можете назвать это "широковещательной" моделью. Вы можете думать о теме как о эквиваленте теме на шаблон дизайна наблюдателя для распределенных вычислений. Некоторые провайдеры JMS рационально выбрать для осуществления этого, как UDP, а не TCP. Для темы доставка сообщений является "огонь-и-забудь" - если никто не слушает, сообщение просто исчезает. Если это не то, что вы хотите, вы можете использовать "длительные подписки".
A очередь JMS является 1-к-1 назначения сообщений. Сообщение принимается только одним из потребляющих ресивер (обратите внимание: последовательно используя подписчики на тему клиента и ресивер для очереди клиента позволяет избежать путаницы). Сообщения, отправленные в очередь, хранятся на диске или в памяти пока кто-то не заберет его или он не истечет. Поэтому очереди (и длительные подписки) нуждаются в активном управлении хранилищем, вам нужно думать о медленных потребителях.
в большинстве сред, я бы сказал,темы являются лучшим выбором, потому что вы всегда можете добавить дополнительные компоненты без необходимости изменения архитектуры. Добавлено компоненты могут быть наблюдения, ведения журналов, аналитики и т. д. Вы никогда не знаете, в начале проекта, какие требования будут как в 1 год, 5 лет, 10 лет. Перемены неизбежны, примите их: -)
Что касается сохранения порядка, см. эта страница ActiveMQ. Короче говоря: заказ сохраняется для единичных потребителей, но с несколькими потребителями заказ доставки не гарантируется.
Если у вас есть N потребителей, то:
темы JMS доставляют сообщения в N из N Очереди JMS доставляют сообщения в 1 из N
Вы сказали, что "хотите иметь "вещь", которая будет отправлять копию сообщения каждому подписчику в той же последовательности, в которой сообщение было получено брокером ActiveMQ."
Итак, вы хотите использовать тему для того, чтобы все N подписчиков получили копию сообщения.
тема:: тема является одним для многих общения... (многоточечная или публикация / подписка) Пример: - представьте, что издатель публикует фильм в youtub, тогда все его подписчики получат уведомление.... QUEVE:: queve-это индивидуальное общение ... Пример: - при публикации запроса на перезарядку он перейдет только к одному qreciever ... всегда помните, если запрос goto все qreceivers, то несколько перезарядка произошло так во время разработки анализировать, который подходит для приложения
очередь-это управляемый объект JMS, используемый для хранения сообщений, ожидающих использования подписчиками. Когда все подписчики потребили сообщение , сообщение будет удалено из очереди.
тема заключается в том, что все подписчики темы получают одно и то же сообщение при публикации сообщения.
Comments