首页 > 解决方案 > QPID:添加临时消息消费者以排出队列中未处理的消息

问题描述

我在一个持久的 QPID 队列上有 2 个消息消费者。这些消息消费者是使用以下代码创建的(我在下面的示例中排除了异常处理以保持主题):

class MessageConsumer {
    private Session session;
    private Queue queue;
    private final MessageListener listener;
    private final ConditionProvider condition; //can be used to modify the selection string if needed

    public MessageConsumer(ConnectionFactory connectionFactory, String queueName, MessageListener listener, ConditionProvider condition) {
            session = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
            queue = session.createQueue(queueName);
    }
//Wakes up every minute and processes messages for the given condition
@Scheduled(fixedRateString = "60000", initialDelay = 1000)
public void listen() {
        if (messageConsumer != null) { 
            messageConsumer.close();
        }               
        messageConsumer = session.createConsumer(queue, condition.getCondition());
        messageConsumer.setMessageListener(listener);
    } 

例子:

我现在想添加一个附加功能,即如果我知道消息未处理的原因已得到解决,则强制排空队列。

什么是有效的选择?

任何帮助表示赞赏。

标签: spring-jmsqpidspring-scheduled

解决方案


推荐阅读