【发布时间】:2013-03-17 04:47:47
【问题描述】:
我有一个程序,其中在一个 ejb 项目中创建会话 bean,并使用队列将消息发送到单独项目中的消息驱动 bean。在消息驱动 bean 中,我设法检索从会话 bean 发送过来的消息。然后该消息将用于获取另一个值,我必须将其发送回会话 bean。关于如何做的任何想法。非常感谢您提供的任何帮助。
ManagerBean:(部分代码)
queueConnection=queueConnectionFactory.createConnection();
session=queueConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
replyQueue=session.createTemporaryQueue();
consumer=session.createConsumer(replyQueue);
consumer.setMessageListener(new LpsListener());
queueConnection.start();
producer=session.createProducer(queue);
message=session.createMapMessage();
message.setJMSReplyTo(replyQueue);
producer.send(message);
和我的 MDB:(部分在 OnMessage 中)
msg=(MapMessage)message;
String memId=msg.getString("MemberId");
int fine=mmr.getFine(memId);
queueConnection=queueConnectionFactory.createConnection();
replyDest=msg.getJMSReplyTo();
replyCorrelationMsgId=msg.getJMSMessageID();
queueSession=queueConnection.createSession(true, 0);
queueProducer=queueSession.createProducer(replyDest);
replyMsg=createReplyMsg(queueSession, replyCorrelationMsgId);
queueProducer.send(replyMsg);
private ObjectMessage createReplyMsg(Session session, String msgId)throws JMSException{
ObjectMessage replyMsg=session.createObjectMessage();
replyMsg.setIntProperty("fine", fine);
replyMsg.setJMSCorrelationID(msgId);
return replyMsg;
}
【问题讨论】:
-
你能添加
createReplyMsg的代码吗? -
@NayanWadekar 好的。已添加
-
您必须配置
ManagerBean来监听MDB 回复的特定队列。很难定位问题,自己调试一下,消息发送是否失败,对方是否正确接收等。 -
@NayanWadekar 所以我的 mdb 的代码应该是正确的吗?通过我在 ManagerBean 中编写的代码,我为 mdb 的任何回复设置了一个侦听器,其中目标由 message.setJMSReplyTo(replyQueue) 提供。我已经尽力调试了,仍然不确定问题出在哪里。