【发布时间】:2019-11-08 01:39:17
【问题描述】:
我的代码在不同的地方有两个不同的 JMS 队列。它从一个队列中获取一条消息,进行一些处理,构建一条新消息,然后将其放在另一个队列中以由不同的进程提取。虽然它有效,但我想要的是让听众连续收听,以便每当有新消息放在第一个队列上时,它就会被拾取。 我的听众的主要方法:
public static void main(String[] args) throws JMSException {
parseArgs(args);
AMessageListener aMessageListener = new AMessageListener();
try {
aMessageListener.startListener();
Thread.sleep(100000);
aMessageListener.destroy();
} catch (JMSException e) {
// TODO handle exception
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
aMessageListener.destroy();
}
还有我用来启动监听器的代码:
public void startListener() throws JMSException{
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ACTIVE_MQ_FACTORY_URL);
conn = connectionFactory.createConnection(jmsBrokerUser, jmsBrokerPass);
conn.start();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("some.in.queue");
MessageConsumer consumer = session.createConsumer(queue);
consumer.setMessageListener(this);
}
我一直在网上寻找任何最佳做法,但几乎找不到。获得我想要的东西的一个明显方法是将while(true)放在我有Thread.sleep(100000)的地方。我真的不觉得这是一种干净的方式。
有什么不同/更好的方法吗?
【问题讨论】:
标签: java jms activemq listener