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