簡體   English   中英

ActiveMQ,我怎么只能創建一個消費者?

[英]ActiveMQ, how can i create only one consumer?

我正在使用Java EE和ActiveMQ。 我想實現一個JMS隊列,可以在其中向我的QUEUE發送消息,並且Consumer + MessageListener應該讀取此消息。

我的《消費者守則》包括以下內容:

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);

    }

但是問題是,每次我運行此代碼時,它都會向我的隊列中推薦一個新的使用者,然后我有一些奇怪的行為,即使用者沒有正確地傳遞消息。 如果我只有一個消費者,那就完美了。

那么,如何確保隊列中只有一位消費者?

我遇到了完全相同的問題。 取消部署時,您需要確保您的戰爭具有正常關閉程序的概念。

您可以通過使用HTTP Servlet來實現此目的,該Servlet實現init(在此處進行所有初始化)並銷毀(在此處進行所有清除)。 取消部署戰爭時,JVM將調用Destory()。

我使用Spring定義所有的bean,ActiveMQ連接,消息使用者和生產者。 我的init()從主xml文件加載Spring應用程序上下文,在本地緩存對其的引用,然后destory()在應用程序上下文上調用close()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM