【发布时间】:2016-04-30 01:06:56
【问题描述】:
我正在向 JMS 队列发送一些消息。有哪些可能的方法可以在队列中搜索要消费的特定消息?
我尝试了以下方式:我在向队列发送消息时设置JMSCorrelationID:
public void createDQueue(String queuename, String json, Integer userid) {
try {
QueueSession.AUTO_ACKNOWLEDGE );
Queue queue = session.createQueue(queuename);
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setJMSCorrelationID(String.valueOf(userid));
objectMessage.setObject(json);
session.createSender(queue).send(objectMessage);
session.close();
connection.close();
}catch(Exception e){
e.printStackTrace();
}
}
在消费者代码中,我想根据JMSCorrelationID 获取特定消息。我无法收到该特定消息。你能提出一个解决方案吗?
public void getSpecificMessage(String queuename, Integer userid) {
try {
QueueConnectionFactory connectionFactory = new ActiveMQConnectionFactory( "tcp://localhost:61616");
((ActiveMQConnectionFactory) connectionFactory).setUseAsyncSend(true);
QueueConnection connection = connectionFactory.createQueueConnection();
connection.start();
QueueSession session = connection.createQueueSession( false,
QueueSession.AUTO_ACKNOWLEDGE );
String id = String.valueOf(userid);
Queue queue = session.createQueue(queuename);
QueueReceiver receiver = session.createReceiver(queue, "JMSCorrelationID="+id);
Message message = receiver.receive();
} catch (JMSException e) {
e.printStackTrace();
}
}
【问题讨论】:
-
我认为您在发布代码时犯了一个错误...第一个代码块不正确。您可以点击问题下方的
edit链接来更正您的问题。