2014-11-13 44 views
0

我有一個駱駝的路線,看起來像這樣獲得空從bean中獲取數據,然後將其與來自seda:external的數據進行比較。問題是當我從seda隊列中獲取數據時,我得到空值。這裏的單元測試:從SEDA隊列

public class Test{ 
    @EndpointInject 
    ProducerTemplate producerTemplate; 

    @EndpointInject 
    ConsumerTemplate consumerTemplate; 

    @Autowired 
    BeanName beanName; 

    @Test 
    public void testName() throws Exception { 
    producerTemplate.sendBody("seda:internal","Good bye"); 

    Thread.sleep(10000); //needs to sleep so that the bean gets executed before accessing 
         //beanName.message; 

    String message = beanName.message; 
    LOGGER.info("Printing" + message); //prints (Good bye) 

    String body = consumerTemplate.receiveBodyNoWait("seda:external", String.class); 
    LOGGER.info("Body is" + body); //prints null 
    } 

任何理由隊列給null

回答

0

它應該是併發的,並且您正在使用快速檢查的recieveBodyNoWait。而是使用receiveBody並提供一個超時值以避免等待隊列中沒有消息。

或者如果您想使用receiveBodyNoWait,則在代碼中添加睡眠。

+0

你的意思是「其應有的併發」是什麼意思?另外,如果我使用receiveBody,它會卡住在consumerTemplate.receiveBody上,因爲隊列中沒有任何東西。同時,你的意思是說,當我使用receiveBodyNoWait時,我應該在代碼中使用sleep,而我已經在這樣做。 :) .. – bangbang