作者chisilence (毛毛)
看板java
标题[问题] JMS的Queue
时间Mon Aug 30 23:28:54 2010
各位前辈好 小弟目前正在撰写讯息传递的程式
撰写的程式有三支 以下用P1 P2 P3称之
基本上P1跟P3的程式码几乎相同
------- --------
P1 Q P2 Q1 P3
------- --------
以上是示意图
P1跟P2之间使用一个queue
P2跟P3之间使用一个queue
传递的资料型态是TextMessage
P2中有宣告两个queue
P1跟P2一起执行或者P2跟P3一起执行的话
执行的结果正确
但是如果三支程式一起执行的话
例如P1传送讯息给P2,P2回传给P1,如果P3这时候选择从P2接收讯息
变成说P3接收到原本P2要回传给P1的讯息
(程式中的传送接收有使用SWITCH来手动做控制)
检查发现,似乎是Q Q1没有发挥作用
所有的资料都是丢到同一个Queue
参考的书上也并未提及两个queue的介绍
以下是小弟P2中宣告queue的程式码 烦请各位前辈指点
不好意思 补上JMS提供者是使用 swiftMQ 2.1.3版
MQUtility mq = null;
MQUtility mq1 = null;
QueueConnectionFactory queueConnectionFactory = null;
QueueConnectionFactory queueConnectionFactory1 = null;
Queue queue = null;
Queue queue1 = null;
try
{
mq = new MQUtility(".", "mq.config");
mq1 = new MQUtility(".", "mq.config");
// connection factory lookup
queueConnectionFactory = (QueueConnectionFactory)mq.getConnectionFactory();
queueConnectionFactory1 =
(QueueConnectionFactory)mq1.getConnectionFactory();
// queue lookup
queue = (Queue)mq.getDestination();
queue1 = (Queue)mq1.getDestination();
}
catch(Exception e)
{
System.out.println("Administered objects lookup failed: " + e.toString());
System.exit(1);
}
QueueConnection queueConnection = null;
QueueConnection queueConnection1 = null;
BufferedReader reader = new BufferedReader(new
InputStreamReader(System.in));
try
{
TextMessage textMessage = null;
TextMessage textMessage1 = null;
// create a queue connection using default identity
queueConnection = queueConnectionFactory.createQueueConnection();
queueConnection1 = queueConnectionFactory1.createQueueConnection();
// create a queue session
QueueSession queueSession = queueConnection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
QueueSession queueSession1 = queueConnection1.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
// create receiver for the specified queue
QueueReceiver queueReceiver = queueSession.createReceiver(queue);
QueueReceiver queueReceiver1 = queueSession1.createReceiver(queue1);
QueueSender queueSender = queueSession.createSender(queue);
QueueSender queueSender1 = queueSession1.createSender(queue1);
// start message delivery
queueConnection.start();
queueConnection1.start();
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.9.65.80
1F:→ dream1124:整面都是queue 眼都花了....XD 08/30 23:31
※ 编辑: chisilence 来自: 124.9.65.80 (08/30 23:41)
2F:推 goodGG:好可怕的naming 08/31 00:57