簡體   English   中英

ActiveMQ在創建使用者時清除排隊的消息

[英]ActiveMQ purge enqueued messages on create consumer

我有一個JAVA應用程序,我需要在創建使用者時清除所有排隊的消息。

我有下一個代碼:

ActiveMQConnectionFactory connectionFactory = new         ActiveMQConnectionFactory(messageBrokerUrl);
    try {
        connection = connectionFactory.createConnection();
        connection.start();
        this.session = connection.createSession(this.transacted, ackMode);
        Destination adminQueue = this.session.createQueue(messageQueueName);

        this.replyProducer = this.session.createProducer(null);
        this.replyProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        //Set up a consumer to consume messages off of the admin queue
        MessageConsumer consumer = this.session.createConsumer(adminQueue);
        consumer.setMessageListener(this);
    } catch (JMSException e) {
        log.error("Error al configurar servicio de colas MQ. " + e.getMessage());
    }

我如何清除已排隊的消息,然后創建使用者,以防止處理排隊的消息。

JMS API沒有清除目標的已定義方法,因此,除了在目標上創建使用者並讀取,直到通過使用對consumer.receive(1000)或類似的內容。

如果您不介意直接使用ActiveMQ對象,則可以嘗試使用ActiveMQConnection中的destroyDestination方法。 如果有對目的地不活躍用戶這種方法會從代理刪除目的地。

否則,您將不得不使用ActiveMQ代理公開的JMX API來實用地清除相關目標。

暫無
暫無

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

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