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