2013-07-29 4 views
2

Я относительно новичок в JMS, и в последнее время я много читаю.JMS design: тема и комбинация очередей

Я планирую создать веб-приложение, которое будет сделать следующее:

  1. вход пользователя в систему и публикует сообщение/вопрос к теме.

  2. Все пользователи, подписавшиеся на эту тему, прочитали сообщение/вопрос и ответили на него.

  3. Оригинатор просматривает все ответы и выбирает наилучший ответ.

  4. Отправитель теперь отвечает только на пользователя, ответ которого он выбрал и просит уточнить.

  5. Ответчик получает сообщение и отвечает.

Итак, как только отправитель выбрал ответ, JMS теперь становится конструкцией запроса/ответа.

Мои вопросы:

  1. Можно ли опубликовать тему с setJmsReplyTo (tempQueue)?

  2. Может ли запрос/отвечать подходить к async?

  3. Это хорошая идея иметь на очередь пользователя?

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

Спасибо.

ответ

1
Is it possible to publish to a topic with setJmsReplyTo(tempQueue)? 

Вы должны быть способны, но я не уверен на 100%. Кстати, я искал в закладках и нашел эту ссылку, которая должна объяснить, что вы должны сделать, чтобы создать систему Request/Response с помощью JMS

http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html

Can request/reply approach be async? 

A сообщение слушателя является объектом, действует как асинхронный обработчик событий для сообщений. Поэтому вы обращаетесь к запросу/ответу, если используете JMS, по умолчанию async.

http://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/prog_model.html#1023398

Is it a good idea to have per user queue? 

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

+0

Спасибо. Я немного склонен к проектированию с публикацией на тему с набором заголовков сообщений. Ваш ответ помог мне с моим решением. –

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

  2. Обязательно! Если вы хотите создать масштабируемую систему, вы должны создать систему, управляемую событиями, используя async вместо блокировки aproach. MessageListener может вам помочь.

  3. Он специфичен для реализации брокера JMS. Если создание очереди довольно дешево, проблем с таким решением нет.

Смежные вопросы