我找到了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) {
}

Java相关问答推荐

为什么Java中的两个日期有差异?

Spring Batch 5-不要让它在数据库中自动创建表

DTO到实体,反之亦然,控制器和服务之间的哪一层应该处理转换?

Spring Boot 3.2.2中的@Inject和@Resource Remove

在AVL树的Remove方法中使用NoSuchElementException时遇到问题

如何修复PDF重建过程中的文本定位

在Java 17中使用两个十进制数字分析时间时出错,但在Java 8中成功

我如何解释这个错误?必需类型:供应商R,提供:收集器对象,捕获?,java.util.List java.lang.Object>>

Spring安全令牌刷新和JWT签名与本地计算的签名不匹配

如何在透视表中添加对计数列的筛选?

具有多个模式的DateTimeForMatter的LocalDate.parse失败

我的代码是线程安全的吗?[Java、CAS、转账]

在应用程序运行时更改LookAndFeel

Java嵌套流查找任意值

用于Java的Visual Studio代码完成不起作用

HBox内部的左对齐按钮(如果重要的话,在页码内)

如何正确使用java.time类?

如何用Micrometer&;斯普肯

ControlsFX RangeSlider在方向垂直时滞后

UuidGenerator Bean 类型不匹配?