2017-10-17 20 views
0

からメッセージIDを取得するにはどうしたら、次のコードがあります。春のリスナー

@JmsListener(destination = "myQueue", containerFactory = "myFactory") 
public void receiveMessage(MyClass message) { 
    service.process(message); 
} 

は今、私はJMSメッセージIDを取得したいが。これを行うにはMappingJackson2MessageConverterクラスをオーバーライドすることができますが、メソッドの2番目の引数のように、より単純な方法で行うことは可能ですか?

答えて

1

@Header注釈を使用します。

@SpringBootApplication 
public class So46794317Application { 

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

    @Bean 
    public ApplicationRunner runner(JmsTemplate template) { 
     return args -> template.convertAndSend("foo", "bar"); 
    } 

    @JmsListener(destination = "foo") 
    public void receive(String in, @Header(JmsHeaders.MESSAGE_ID) String messageId) { 
     System.out.println(in + ", id:" + messageId); 
    } 

} 

結果:

bar, id:ID:host.local-50513-1508260336349-4:2:1:1:1 
+0

感謝!!!! – Andres