0
我正在使用Java EE和ActiveMQ。我想实现一个JMS队列,我可以将消息发送到我的QUEUE,并且Consumer + MessageListener应该读取此消息。ActiveMQ,我如何创建只有一个消费者?
的代码为我的消费者IST如下:
private void initializeActiveMq() throws JMSException {
// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
// Create a Connection
connection = connectionFactory.createConnection();
connection.start();
// Create a Session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Create the destination (Queue)
Queue queue = session.createQueue(queueName);
// Create a MessageConsumer from the Session to the Queue
consumer = session.createConsumer(queue);
consumer.setMessageListener(this);
}
但问题是,每次我都会运行此代码它的广告新的消费我的排队时间,然后我有一些奇怪的行为的消费者然后没有正确地传递消息。如果我只有一个消费者,它完美的作品。
那么如何确保我的队列中只有一位消费者?
只调用这段代码一次? – jtahlborn
问题是,我用这段代码构建了一个war文件。每次我在我的服务器上重新部署我的ware文件时,这段代码都会调用它并添加一个新的使用者。这个解决方案的唯一解决方案是,每次我重新部署我的战争文件时,我都必须重新启动activemq,这会杀死所有消费者。但我想要一个解决方案,我不能重新启动activemq .. – user2115378