2017-10-17 77 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