2016-04-04 20 views
0

için MessageListener öğesinin çağrılmasından önce varsayılan yöntemi ekleyin. Uygulamanın sınıfının bir işlevini çağırmadan önce Spring Amqp'deki İleti üstbilgisinde bir değer alan bazı varsayılan işlevler eklemem gerekir. Örneğin Yukarıdan ÖrneğinSpring Amqp

class TestListener implements MessageListerner { 

public void onMessage(Message message){ 
// some logic 
    } 
} 

i onMessage çağrılmadan önce ileti nesnesi kullanarak bazı özelleştirilmiş işlevselliği aramak gerekir.

SpringAmqp

+0

public void onMessage(Message message) { // process myListener.onMessage(message) } 

Veya dinleyici konteyner tam da bu nedenle bir özellik afterReceivePostProcessors var ... Mesajı almadan önce, bunu göndermeden önce yapın. Ya da sadece başlık değişimi gibi bir şey kullanmak ister misin? – cantSleepNow

+0

Gereksinim, Message onMessage öğesinden önce dinleyici tarafında herhangi bir ticari işlem gerçekleştirmektir. Örneğin. Üretici tarafında, mesaj başlığındaki değer, thread name = t1, dinleyici tarafında ise, bu değeri alıp diğer mesaj için t1 üzerinde herhangi bir jenerik işlemi gerçekleştirir, threadname değeri t2 vb. Olabilir. – Akshat

+0

Ama 'onMessage' sadece mesaj alındığında çağrılır (ya da bir şey eksik)? – cantSleepNow

cevap

0

Sadece kendi dinleyici etrafında basit bir sarıcı sınıf oluşturabilir aynı başarmak için herhangi zarif bir yolu var mı. Eğer değiştirmek istiyorsanız ben ... ardında soru, ya da belki nedenini anlamıyorum

/** 
* Set {@link MessagePostProcessor}s that will be applied after message reception, before 
* invoking the {@link MessageListener}. Often used to decompress data. Processors are invoked in order, 
* depending on {@code PriorityOrder}, {@code Order} and finally unordered. 
* @param afterReceivePostProcessors the post processor. 
* @since 1.4.2 
*/ 
public void setAfterReceivePostProcessors(MessagePostProcessor... afterReceivePostProcessors) { ... }