如何将持久性设置为JMS客户端?

时间:2017-01-17 08:27:02

标签: java jms weblogic ibm-mq

我通过JMS与使用SSL的安全通道建立了与Weblogic IBM Webpsphere MQ的连接。 我在Weblogic上的应用程序从MQ接收消息。 发送回复队列的答案。 响应头是MQMD,它填充java。在参数Persistence JMS中发送值“1”。其他系统需要在Persistence中接收值“0”。如何将此参数设置为java? 我猜这个参数是javax.jms.deliverymode。但我怎么设置它我不知道。

无论如何,谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

JMS上的相应属性是用于设置持久消息和非持久消息的传递模式(要设置的Int参数)。

您可以从IBM引用此网址了解详情

答案 1 :(得分:1)

您应该尝试这样:

public String sendMessage(ConnectionFactory connectionFactory,
                      Destination destination,
                      Destination jmsReplyTo,
                      CorrelationType correlationType,
                      CallOptions<String> callOptions,
                      String rqUid,
                      JMSAbstract transport) throws JMSException {
Connection connection = null;
Session session = null;
MessageProducer producer = null;

try {

    connection = connectionFactory.createConnection();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    producer = session.createProducer(destination);

    // Set JMS DeliverMode (1/2)
    producer.setDeliveryMode(1);

    // create message
    Message message = createTextMessage(session, jmsReplyTo, correlationType, callOptions, rqUid, transport);

    // send message
    producer.send(message);

    return correlationType.getCorrelationId(message);

    } finally {
        closeResource(connection, session, null, producer, rqUid);
    }
}

这只是一个Java示例。您也可以在IBM WebSphere的“队列配置”中设置持久性标志。我的意思是MQQueue具有方法setPersistence。如果在项目中使用IBM Java对象,则可以通过调用该方法来设置持久性:

MQQueue mqQueue = new MQQueue("QueueName");
mqQueue.setPersistence(1);

答案 2 :(得分:1)

I 0x5a4d的答案还可以,但是最好像IBM最佳实践一样使用它

//Persistentmode = 1 
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//Persistentmode = 2 
producer.setDeliveryMode(DeliveryMode.PERSISTENT);