Re: [J2EE] 問題,想請問 JMS的Queue的問題
※ 引述《LCHENAN (~!!)》之銘言:
: 各位前輩大家好:
: 小弟今天在撰寫程式時,一直卡在一個地方,查詢了
: 課本: Java訊息服務這本書 尚未找到答案,當然Google也goo
: 因此想說來請教大家
: 運行環境
: 電腦A Windows XP,JDK6 update15,GlassFish, ORBListenerPort:3700
: 連線工廠: jms/Queue_ConnectionFactory
: 連線資源: jms/Queue
: 電腦B的環境跟電腦A是相同的
: 我碰到的問題是:
Q1: JMS Provider 是不是只有一個?
: 我在主機A上啟動了一個程式"甲"
: 這個甲的功能在於
: 1. 啟動本機的連線資源 jms/Queue的監聽
: 2. 定時發送訊息給主機B的jms/Queue
: 3. 顯示本機 jms/Queue所收到的Message訊息
: 並且也在主機B上啟動了一個程式"乙"
: 這個乙的功能在於
: 1. 啟動本機的連線資源 jms/Queue的監聽
: 2. 顯示本機 jms/Queue所收到的Message訊息
: 在啟動之後
: 我發現:
: 第一個情況:
: 電腦B一直無法收到來自於電腦A的訊息,
: 然而電腦A卻可以收到訊息自己發送出來的訊息
: 第二個情況:
: 我把甲程式監聽jms/Queue的功能關掉,
: 此時,神奇的事情就發生了
: 電腦B就可以顯示從電腦A發出的訊息
: 我想請問這個情況要用什麼樣的方式解決呢?
: 麻煩大家給小弟一個指引的方向?
: 謝謝
JMS Queue Domain (俗稱 Producer/Consumer Model)
可以有多個 Producer、Consumer。但是一個訊息只能被一個 Consumer 收到。
收到就消耗掉了,不會有其他人再收到。
你在甲開了 Consumer、乙也開了 Consumer。
只要有人先收到,另一方不就不可能收到。(JMS 不保證收到的優先順序)
如果你要大家都收到應該用 Topic Domain (Publish/Subscribe)
這樣就不會有訊息被消耗掉有人沒收到的現象。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.48.9
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 3 之 7 篇):