首页 文章

ActiveMQ清除创建使用者的入队消息

提问于
浏览
0

我有一个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());
    }

如何清除排队的邮件然后创建使用者,以防止排队的邮件被处理 .

1 回答

  • 2

    JMS API没有用于清除目标的已定义方法,因此除了在目标上创建使用者以及读取之前,使用JMS API单独执行此操作是不可能的,直到您使用 consumer.receive(1000) 或类似的连续调用得不到任何回复 .

    如果您不介意直接使用ActiveMQ对象,则可以尝试在ActiveMQConnection中使用 destroyDestination 方法 . 此方法将从代理中删除目标 IF 该目标上没有活动订阅者 .

    否则,您将使用ActiveMQ代理公开的JMX API来实际清除相关目标 .

相关问题