2016-04-06 15 views
1

Böyle giden kanal adaptör ile JMS mesaj gönderiyorum: Bundan sonraJMSMessageId bir outbound-channel-adapter ile gönderdikten sonra nasıl edinilir?

<intjms:outbound-channel-adapter 
     destination-name="MY.QUEUE" 
     connection-factory="myConnectionFactory" 
     channel="mySender"/> 

ben JMS mesaj kimliği bilmemiz gerekir. Onu nasıl alabilirim?

There is özel bir JmsTemplate yapmanın bir yolu Bağdaştırıcıda sağlayabilirdim, ancak belki bu sorun için daha basit bir çözüm var.

Ağ geçidini kullanamıyorum çünkü yanıt yok.

cevap

0

JMS Message, Bahar Entegrasyon Mesajının payload numarası olarak bu adaptöre gönderebilirsiniz. Ve başarılı gönderdikten sonra getJMSMessageID() kullanın.

GÜNCELLEME

Ama bu ben oluşturmak edebilmek için başıma javax.jms.Connection ve javax.jms.Session başa JmsTemplate ait convencience kullanmak ve olamaz anlamına gelir javax.jms.Message, doğru mu?

Eh, hiç kimse genel <service-activator> bir referans olarak dahi JmsTemplate doğrudan kullanmaya korusun. <outbound-channel-adapter>, hedef tarafından tek yönlü'dir. Yani gerçekten bir şey döndürmek için tasarlanmamıştır. Köşedeki davada gerçekten yapacak bir şey gerekiyor. Ve javax.jms.Session kanca ve püf noktaları, daha sonra ID almak için bir JMS Mesajını oluşturuyor. Özel bir ThreadLocal deliği, özel JmsHeaderMapper ve ileti erişiminin fromHeaders() uygulamasından geliyor, ancak bu durumda, doğrudan JmsTemplate'u kullanmanın daha iyi olacağını düşünüyorum.

+0

Ancak bu, “JmsTemplate” kavramını kullanamıyorum ve javax.jms oluşturabilmek için javax.jms.Connection ve javax.jms.Session ile başa çıkmak zorunda olduğum anlamına gelir. .Message, doğru mu? –

+0

Cevabımla bir UPDATE bulun. –

İlgili konular