jms - 在一笔事务中发送多条 jms 消息

标签 jms spring-jms jmstemplate

我必须向 2 个不同的队列(队列 1 和队列 2)发送消息。但是,如果任何队列(队列1或队列2)的发送失败,我想回滚。

我的源代码如下所示。任何人都可以对此发表一些意见。

  public void sendMessage(final Map<String, String> mapMessage) {

    jmsTemplate.send(queue1, session -> {
      MapMessage message = session.createMapMessage();
      Iterator<Entry<String, String>> it = mapMessage.entrySet().iterator();
      while (it.hasNext()) {
        Map.Entry<String, String> pair = it.next();
        message.setStringProperty(pair.getKey(), pair.getValue());
      }
      message.setJMSRedelivered(true);
      message.setJMSCorrelationID(UUID.randomUUID().toString().replaceAll("-", ""));
      return message;
    });

    jmsTemplate.send(queue2, session -> {
      MapMessage message = session.createMapMessage();
      Iterator<Entry<String, String>> it = mapMessage.entrySet().iterator();
      while (it.hasNext()) {
        Map.Entry<String, String> pair = it.next();
        message.setStringProperty(pair.getKey(), pair.getValue());
      }
      message.setJMSRedelivered(true);
      message.setJMSCorrelationID(UUID.randomUUID().toString().replaceAll("-", ""));
      return message;
    });

    } 

最佳答案

在进入sendMessage方法之前启动一个事务,例如与 @Transactional - 请参阅 Spring Framework Reference Manual .

关于jms - 在一笔事务中发送多条 jms 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44535195/

相关文章:

尝试从 Glassfish 获取 JMS 资源时出现 javax.naming.NoInitialContextException

java - Spring 3.0.3 和 JMS 2.0 支持

spring - 使用 Spring JmsMessagingTemplate 的自定义 MessageConverter 未按我的预期工作

spring - 如何在 spring 为 weblogic 配置 jms 模板?

java - 在单个事务中发送多个 jms 消息

java - Camel 路线可耻地关闭

java - 已知的 RPC 协议(protocol)置于 JMS 之上

java - Arjuna JTA 事务意外回滚

java - ActiveMQ 给出 : "Could not connect to broker URL: tcp://localhost:61616" after around 10 000 messages

java - 使用springs TransactionSynchronizationManager时出现问题