第2個案例就是工作隊列,典型的點對點的消息,一個PRoducer發送一個工作消息到隊列去,具有Listener類的Consumer能夠從工作隊列中獲得一個工作情況的消息,這個消息被這個消費者消費掉之后,就不存在了,隸屬于一點對一點模式,這不同于3.2案例中的股票期貨那樣可以把一個價格發布到多個訂閱了的消費者身上。
還有一點不同:Producer使用消息生產者發送了100個消息進入隊列后,就馬上關閉連接了,這一點同3.2一樣。此后,這10個消息仍舊存在于JMS服務器消息域中,隨后的消費者什么時候運行就什么時候來消費掉這些消息,不用一直在線等,該隊列中的消息也不會逝去。這也是不同于3.2案例的地方。
啟動步驟:
1、 啟動ActiveMQ。
2、 首先要運行的是Producer類。
3、 在運行Consumer類。
需要說明的一點是:
1、這次誰先啟動都無所謂,因為在消息會在隊列里暫時存儲一段時間,誰先啟動都無關緊要,這一點我已經證實多次了,而且,消費者所獲得的消費消息也會完整無缺,一個也不缺。
2、關于“點對點”模式的說明,具體來講應該是“消息點對點”。如果理解為一個生產者和一個消費者,那這樣是理解錯誤的,應該是一個生產者發出消息只能有被一個消費者所消費后,其他的消費者是得不到的,因為該條消息是一次性的,進入隊列后在從隊列中,在隊列中什么也沒有發生變化,而且隊列形象的象個直通子的容器,只是讓這條消息在里面呆了一陣子而已,無它。
這是我理解下的消息點對點模式圖:
附件:程序的運行結果:
新聞熱點
疑難解答