2017-10-17 112 views
0

得到消息ID我有以下代碼:如何從春監聽

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

現在,我想獲得的JMS消息ID。我知道我可以重寫MappingJackson2MessageConverter類來做到這一點,但有可能以一種更簡單的方式來完成,就像使用方法的第二個參數一樣?

回答

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