2017-12-28 19 views
1

メッセージを送信した後にJMSメッセージヘッダーを取得する方法はありますか?メッセージを送信した直後に、メッセージを使用せずにJMSヘッダーを取得します。

これはコード

jmsTemplate.convertAndSend(que, text, message -> { 

     LOGGER.info("setting JMS Message header values");  
     message.setStringProperty(RequestContext.HEADER_ID, id); 
    // LOGGER.info(message.getJMSMessageId()); -- this gives a null value here 
     return message; 
}); 

を送る私のメッセージであるメッセージがそのようにMessagePostProcessorを使用している場合、JMSメッセージのヘッダを取得するための簡単な方法があるIISキューにポストされた後にメッセージヘッダのみ生成されますか?

私は、リンクを参照してきた - herehereではなく、ヘルプの多く:(

答えて

1

メッセージが実際に送信されるまで、あなたはJmsMessageIDヘッダを取得することはできません。ポストプロセッサはちょうどあなたが変換さを変更することができますそれが送信される直前のメッセージ。

それはあなたが後でアクセスできるメッセージへの参照をオフに保存されますので、あなたの2番目のリンクは、[OK]を動作するはずです。

EDIT

確認:

@SpringBootApplication 
public class So48001045Application { 

    public static void main(String[] args) { 
     SpringApplication.run(So48001045Application.class, args).close(); 
    } 

    @Bean 
    public ApplicationRunner runner(JmsTemplate template) { 
     return args -> { 
      final AtomicReference<Message> msg = new AtomicReference<>(); 
      template.convertAndSend("foo", "bar", m -> { 
       msg.set(m); 
       return m; 
      }); 
      System.out.println(msg.get().getJMSMessageID()); 
     }; 
    } 

} 

ID:host.local-61612-1514496441253-4:1:1:1:1 
+0

を第2のリンクが正常に動作することを確認。 –

関連する問題