2017-06-14 13 views
0

2つの異なるキュー(queue1とqueue2)にメッセージを送信する必要があります。しかし、キュー(キュー1またはキュー2)のいずれかで送信が失敗した場合は、ロールバックします。1つのトランザクションで複数のjmsメッセージを送信

私のソースコードは次のようになります。誰かがこれに関するいくつかの入力をすることができます。

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; 
    }); 

    } 

答えて

1

sendMessageメソッドを入力する前にトランザクションを開始します。 @Transactionalと - Spring Framework Reference Manualを参照してください。

+0

こんにちはゲイリー、私は両方のjavaxと春の@Transactional別々に基づいて試してみました。しかし、それは働かなかった。コードを以下のように変更しました。出来た。しかし、私は、プログラムのロールバックではなく、この宣言をどのようにすることができるのだろうかと思います。リソース PlatformTransactionManager jmsTransactionManager; TransactionStatus status = jmsTransactionManager.getTransaction(new DefaultTransactionDefinition()); 2番目のjmsTemplate.sendの後に、私はコミットを使用します。例外ブロックでは、私はロールバックを使用しました。 jmsTransactionManager.commit(status); またはjmsTransactionManager.rollback(status); –

+0

何かが誤って構成されている必要があります。宣言的なトランザクションは正常に動作するはずです。コメントにコードを入れないでください。事実上判読できない。代わりに質問を編集します。リファレンスマニュアルをよくお読みください。あなたがまだそれを理解できない場合は、すべての設定を表示してください。 –

+0

@Transactional of springを追加することで問題を解決できます。欠落していた部分は、SpringブートアプリケーションクラスのEnableTransactionManagementでした。おかげでゲイリー –

関連する問題