Java 如何将持久性设置为JMS客户端?
我使用使用SSL的安全通道通过JMS与Weblogic IBM Webpsphere MQ建立了连接。 我在Weblogic上的应用程序收到来自MQ的消息。 正在将应答发送到应答队列。 响应头存在于MQMD中,它填充java。在参数持久化JMS发送值“1”中。其他系统需要在持久化时接收值“0”。如何将此参数设置为java? 我猜这个参数是javax.jms.deliverymode。但我不知道如何设置它Java 如何将持久性设置为JMS客户端?,java,jms,weblogic,ibm-mq,Java,Jms,Weblogic,Ibm Mq,我使用使用SSL的安全通道通过JMS与Weblogic IBM Webpsphere MQ建立了连接。 我在Weblogic上的应用程序收到来自MQ的消息。 正在将应答发送到应答队列。 响应头存在于MQMD中,它填充java。在参数持久化JMS发送值“1”中。其他系统需要在持久化时接收值“0”。如何将此参数设置为java? 我猜这个参数是javax.jms.deliverymode。但我不知道如何设置它 无论如何,谢谢您的帮助。JMS上的相应属性是传递模式(要设置的Int参数),用于设置持久性和
无论如何,谢谢您的帮助。JMS上的相应属性是传递模式(要设置的Int参数),用于设置持久性和非持久性消息
您可以从中引用此URL以了解详细信息您应该这样尝试:
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);
}
}
我认为0x5a4d的答案是可以的,但最好像IBM最佳实践那样使用它
//Persistentmode=1
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//Persistentmode=2
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
谢谢,但是如何在JMS-JMSDeliveryMode上设置属性?此属性设置在何处?创建要放置的邮件时,请设置此属性。另请注意:。我只是检查一下。您必须在QueueSender中设置要反映的值。这就是问题所在。我的应用程序不生成头MQMD。标题构建Weblogic服务器。我的应用程序在没有MQMD的情况下接收到消息。MQMD由java与库com.ibm.mq.jar组成。我从MQ服务器获取的库。您也不需要创建MQMD。我假设您在消息或队列发送者级别进行操作。JMS传递模式是在队列发送方级别设置的
MQQueue mqQueue = new MQQueue("QueueName");
mqQueue.setPersistence(1);