WebSphere 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

我发现了我的问题。我有一个父母的方法,它具有 @transactional注释。我不希望我的新JMS消息成为该交易的一部分,因此我将添加JMstemplate.setsessessessestransacted(false);在执行JMstemplate.SEND之前。我创建了一个单独的JMSTEMPALTE来发送我的新消息,而不是重复使用存在的消息,需要管理。

最新更新