Re: [J2EE] 問題,想請問 JMS的Queue的問題

看板java作者 (~!!)時間16年前 (2009/08/09 00:45), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串5/7 (看更多)
※ 引述《qrtt1 (null)》之銘言: : ※ 引述《LCHENAN (~!!)》之銘言: : : 各位前輩大家好: : : 小弟今天在撰寫程式時,一直卡在一個地方,查詢了 : : 課本: Java訊息服務這本書 尚未找到答案,當然Google也goo : : 因此想說來請教大家 : : 運行環境 : : 電腦A Windows XP,JDK6 update15,GlassFish, ORBListenerPort:3700 : : 連線工廠: jms/Queue_ConnectionFactory : : 連線資源: jms/Queue : : 電腦B的環境跟電腦A是相同的 : : 我碰到的問題是: : Q1: JMS Provider 是不是只有一個? 嗯,只有電腦A的甲程式會送出訊息 : : 我在主機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) : 這樣就不會有訊息被消耗掉有人沒收到的現象。 大大我懂您的意思,您的意思是說 如果電腦A跟電腦B 共用了一個JMS伺服器,則一個Queue的訊息出來之後 只能被甲或乙程式處理 但小弟現在碰到的問題是: 電腦A上面有一個JMS伺服器(GlassFish) 電腦B上面也有一個JMS伺服器(GlassFish) 而甲程式的部份程式碼 QueueConnectionFactory qFactory = null; InitialContext jndi = null; Properties env = new Properties(); env.put("org.omg.CORBA.ORBInitialHost", "A"); //在這邊指定電腦A //指定要傳送的Port env.put("org.omg.CORBA.ORBInitialPort", "3700"); jndi = new InitialContext(env); 以上的設定應該是只能接收到來自於電腦A的jms/Queue 而乙程式的部份程式碼 QueueConnectionFactory qFactory = null; InitialContext jndi = null; Properties env = new Properties(); env.put("org.omg.CORBA.ORBInitialHost", "B"); //在這邊指定電腦B //指定要傳送的Port env.put("org.omg.CORBA.ORBInitialPort", "3700"); jndi = new InitialContext(env); 以上的設定應該是只能接收來自於電腦B的jms/Queue 如此的設定 電腦A上的甲程式為什麼會收到來自於本身jms/Queue的訊息呢? 還是這樣的設定根本就是錯誤的??? 苦惱中~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.116.134.16

08/09 00:47, , 1F
檢查一下二個 JMS 有沒有自動組成 cluster 設定唄!?
08/09 00:47, 1F

08/09 00:49, , 2F
不過 J2EE 不是有 @Resource 可以 inject JMS 的資源嗎?
08/09 00:49, 2F

08/09 00:49, , 3F
為什麼你的用法那麼複雜 Orz
08/09 00:49, 3F

08/09 00:50, , 4F
感謝,這就馬上來研讀這個部份 謝謝^^
08/09 00:50, 4F

08/09 01:30, , 5F
還是~~~無法搞懂!!!! 有人知道這是怎麼回事嗎???
08/09 01:30, 5F

08/09 03:40, , 6F
建議你把完整點的code po出來 別人也好幫你看看
08/09 03:40, 6F
文章代碼(AID): #1AVQkhyd (java)
討論串 (同標題文章)
文章代碼(AID): #1AVQkhyd (java)