我找到了similar question个,但我不知道如何将这个答案应用到我的程序中.我不明白如何在一个事务中打开会话并发送所有消息.
现在,我在for循环中调用JmsTemplate.convertAndSend("queue", "message")
.
我找到了similar question个,但我不知道如何将这个答案应用到我的程序中.我不明白如何在一个事务中打开会话并发送所有消息.
现在,我在for循环中调用JmsTemplate.convertAndSend("queue", "message")
.
IBM MQ附带了一些示例.请参考它们作为起点.下面的示例从SimplePTP.java示例修改为在循环中发送消息,然后提交.第一个参数为true
的createSession调用用于启动事务,所有消息发送后有session.commit
个用于提交事务.
try {
// Create a connection factory
JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
JmsConnectionFactory cf = ff.createConnectionFactory();
// Set the properties
cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, "localhost");
cf.setIntProperty(WMQConstants.WMQ_PORT, 1414);
cf.setStringProperty(WMQConstants.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN");
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, "QM1");
cf.setStringProperty(WMQConstants.WMQ_APPLICATIONNAME, "SimplePTP (JMS)");
// Create JMS objects
connection = cf.createConnection();
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("queue:///Q1");
producer = session.createProducer(destination);
// Start the connection
connection.start();
for (int i=0; i < 10; i++) {
long uniqueNumber = System.currentTimeMillis() % 1000;
TextMessage message = session.createTextMessage("SimplePTP: Your lucky number today is " + uniqueNumber);
// And, send the message
producer.send(message);
System.out.println("Sent message:\n" + message);
}
session.commit();
}
catch (JMSException jmsex) {
}