作者LCHENAN (~!!)
看板java
标题Re: [J2EE] 问题,想请问 JMS的Queue的问题
时间Sun Aug 9 00:45:30 2009
※ 引述《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
1F:推 qrtt1:检查一下二个 JMS 有没有自动组成 cluster 设定呗!? 08/09 00:47
2F:→ qrtt1:不过 J2EE 不是有 @Resource 可以 inject JMS 的资源吗? 08/09 00:49
3F:→ qrtt1:为什麽你的用法那麽复杂 Orz 08/09 00:49
4F:→ LCHENAN:感谢,这就马上来研读这个部份 谢谢^^ 08/09 00:50
5F:→ LCHENAN:还是~~~无法搞懂!!!! 有人知道这是怎麽回事吗??? 08/09 01:30
6F:推 Maisky:建议你把完整点的code po出来 别人也好帮你看看 08/09 03:40