WebSphere MQ消息从队列中消失

时间:2019-03-21 19:36:05

标签: websphere ibm-mq message mq

我想,如果有人有想法,我会在这里提出一个问题。我的MQ管理员创建了一个新队列和别名队列,供我向其中写入消息。我有一个应用程序在写队列,另一个应用程序在别名队列上侦听。我正在使用spring jmsTemplate写入我的队列。我们看到的一种行为是将消息写入队列,然后立即被丢弃。我们禁用了获取功能,并查看是否以某种方式设置了到期参数,我使用了jms模板来设置到期设置(timeToLive)。我将有效期设置为10分钟,但是我的消息仍然会立即消失。下面是我的代码和设置的摘要。

    public void publish(ModifyRequestType response) {

    jmsTemplate.setExplicitQosEnabled(true);
    jmsTemplate.setTimeToLive(600000);
        jmsTemplate.send(CM_QUEUE_NAME, new MessageCreator() {
            public Message createMessage(Session session) throws JMSException {

                String responseXML = null;
                try {
                    responseXML myJAXBContext.getInstance().toXML(response);
                    log.info(responseXML);
                    TextMessage message = session.createTextMessage(responseXML);
                    return message;
                } catch (myException e) {
                    e.printStackTrace();
                    log.info(responseXML);
                    return null;
                }


        }
    });
}

/////////////////我的设置

QUEUE.PUB_SUB_DOMAIN=false
QUEUE.SUBSCRIPTION_DURABLE=false
QUEUE.CLONE_SUPPORT=0
QUEUE.SHARE_CONV_ALLOWED=1
QUEUE.MQ_PROVIDER_VERSION=6

1 个答案:

答案 0 :(得分:0)

我发现了我的问题。我有一个具有@Transactional批注的父方法。我不希望新的jms消息成为该事务的一部分,所以我要添加jmsTemplate.setSessionTransacted(false);。在执行jmsTemplate.send之前。我创建了一个单独的jmsTempalte来发送我的新消息,而不是重用需要管理的现有消息。