Какие все функции имеются в очереди, которые не могут быть достигнуты по теме? - PullRequest
2 голосов
/ 11 августа 2010

Какая вся функциональность есть в очереди , чего не может достичь тема ??

1 Ответ

1 голос
/ 11 августа 2010

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

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

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

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

С точки зрения чистого JMS очередь и тема являются экземплярами назначения и являются взаимозаменяемыми, если вы не пытаетесь просматривать,Приложение может не знать, является ли открытое место назначения очередью или темой, если оно не использует instanceOf () во время выполнения для выяснения.

...