将选择器与 JMSMessageID 一起使用总是返回 null

问题描述 投票:0回答:1

这里我试图从队列中删除一条消息。但消息返回始终为空。即使提供的 jmsId 存在一条消息。 我在这里做错了什么。

注意:队列初始化是正确的,使用相同的方法从队列中获取信息

public void markAsViewed(String jmsId) throws JMSException, NamingException {
    try {
        InitialContext initialContext = new InitialContext();
        connectionFactory = (ConnectionFactory) initialContext.lookup("java:comp/env/qTt");
        mQueue = (Queue) initialContext.lookup("java:comp/env/qTtQueueRef");
        jmsConnection = connectionFactory.createConnection();
        jmsSession = jmsConnection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
        messageConsumer = jmsSession.createConsumer(mQueue, "JMSMessageID='" + jmsId + "'");
        Message inMessage = messageConsumer.receive(1000);// inMessage value is null always
    }

示例 JmsId 值为

jmsId ="ID:789aba4c22aebc7c99974c06110a134f0000000000000001 ";
jms
1个回答
0
投票

至少您不会在 start()

 上调用 
Connection
,这意味着消息将永远不会流向您的消费者。在调用 
createConnection()
:

后添加此行
jmsConnection.start();

您的

jmsId
也可能有问题,因为它末尾包含一个空格,这似乎不太可能有效。

© www.soinside.com 2019 - 2024. All rights reserved.