2013-07-29 51 views
2

我對JMS比較陌生,最近我一直在閱讀它。JMS設計:主題和隊列組合

我打算設計一個Web應用程序這將做到以下幾點:

  1. 用戶登錄到系統,併發布消息/問題的話題。

  2. 訂閱該主題的所有用戶都會閱讀該郵件/問題並進行回覆。

  3. 發起人審查所有的答案,並選擇最佳答案。

  4. 發件人現在只回復他/她挑選的用戶,並要求進一步澄清。

  5. 響應者獲取消息並回復。

因此,一旦發起者選擇了答案,JMS現在變成了請求/回覆設計。

我的問題是:

  1. 是否可以發佈到一個話題setJmsReplyTo(tempQueue)?

  2. 可以請求/回覆的方法是異步嗎?

  3. 擁有每個用戶隊列是一個好主意嗎?

這些問題可能有些愚蠢到這裏的一些專家,但請裸記住,我仍然在學習。

謝謝。

回答

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

你應該能夠但我不是100%確定的。順便說一句,我搜索我的書籤,並發現這個鏈接,應該說明你所要做的使用JMS

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

Can request/reply approach be async? 

消息監聽器要建立一個請求/響應系統,什麼是一個對象,充當消息的異步事件處理程序。因此,如果使用JMS,則採用默認的異步方式處理請求/回覆。

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. 當然!如果你想創建一個可擴展的系統,你應該使用異步設計事件驅動系統,而不是阻止aproach。 MessageListener可以幫助你。

  3. 它特定於JMS代理實現。如果隊列創建非常便宜,這樣的解決方案沒有問題。