我使用的是動態(tài)隊列和容器偵聽器,我的問題是我必須偵聽特定隊列的方法不會接收消息對象。我得到一個ListenerExecutionError異常:“未能調(diào)用參數(shù)類型為[class[B],值=的目標(biāo)方法'dataHandler'[{[B@65f26bf7}]"
當(dāng)我使用RabbitListener注釋時,我的代碼可以正常工作,它完全接受Message對象,但當(dāng)使用容器時,我遇到了這個問題。我將處理程序參數(shù)類型從Message切換為byte[],并根據(jù)需要調(diào)用該方法。我猜RabbitListener注釋做了一些轉(zhuǎn)換,但我沒有意識到。
有人請幫幫我。
這是我的容器創(chuàng)建代碼:
SimpleMessageListenerContainer listen = new SimpleMessageListenerContainer();
listen.setConnectionFactory(rabbitTemplate.getConnectionFactory());
listen.setQueueNames(testQueue);
MessageListenerAdapter adapt = new MessageListenerAdapter();
adapt.setDefaultListenerMethod(randomMethod);
adapt.setDelegate(this);
listen.setMessageListener(adapt);
listen.start();
這是我的監(jiān)聽器方法簽名。
public void randomMethod(Message msg)
將代碼發(fā)送到此隊列的行是:
Message message = new Message(data, props)
rabbitTemplate.convertAndSend(testQueue, message);
數(shù)據(jù)是字節(jié)數(shù)組,props是MessageProperties對象。
適配器不是用來簡單地傳遞這樣的消息的,只需使用
MessageListener
即可。or...