2017-10-17 8 views
0

je le code suivant:Comment obtenir le message Id d'un auditeur de printemps

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

Maintenant, je veux obtenir l'ID de message jms. Je sais que je peux remplacer la classe MappingJackson2MessageConverter pour ce faire, mais est-il possible de le faire d'une manière plus simple, comme avec un second argument sur la méthode?

Répondre

1

Utilisez l'annotation @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); 
    } 

} 

Résultat:

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

Un grand merci !!!! – Andres