我是Spring RabbitMQ的新手。我试图发送我的chatmessage对象到RabbitMQ,但在RabbitMQ配置期间,我得到下面的错误:
org.springframework.amqp.rabbit.listener.exception。FatalListenerExecutionException:无效的侦听器org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer AsyncMessageProcessingConsumer.run美元(SimpleMessageListenerContainer.java: 1142)在java.lang.Thread.run(来源未知)org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException:调用目标方法'handleMessage'失败,参数类型= [class [B],值= [{[B@6bced6b0}]org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod (MessageListenerAdapter.java: 348)org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.onMessage (MessageListenerAdapter.java: 253)org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener (AbstractMessageListenerContainer.java: 756)org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener (AbstractMessageListenerContainer.java: 679)org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access 001美元(SimpleMessageListenerContainer.java: 83)org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer invokelistener 1.美元(SimpleMessageListenerContainer.java: 170)org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener (SimpleMessageListenerContainer.java: 1257)在org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener
RabbitConfiguration:
@Bean
TopicExchange directExchange(){
return new TopicExchange(MessagingBusNamespace.CHAT_MESSAGE_TOPIC_EXCHANGE);
}
@Bean
Binding binding(final Queue queue, final Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(MessagingBusNamespace.ROUTE_KEY).noargs();
}
@Bean
HTTPChatMessageReceiver receiver(){
return new HTTPChatMessageReceiver();
}
@Bean
MessageListenerAdapter messageListenerAdapter(){
return new MessageListenerAdapter(receiver(), "handleMessage");
}
@Bean
SimpleMessageListenerContainer simpleMessageListenerContainer(final ConnectionFactory connectionFactory,
final MessageListenerAdapter messageListenerAdapter){
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(MessagingBusNamespace.CHAT_MESSAGE_QUEUE);
container.setMessageListener(messageListenerAdapter);
return container;
}
处理程序类:
public class HTTPChatMessageReceiver {
public HTTPChatMessageReceiver() {
// TODO Auto-generated constructor stub
}
public void handleMessage(ChatMessage message) {
}
}
我终于找到了问题所在。这个问题与MessagingListenerAdapter无关。这与我如何定义队列名有关。如果我声明队列,例如"queue。, Spring抛出上面的异常。当我把队列名从"queue。"聊天"到"messaginggateway-chat-queue",应用程序成功启动。
谢谢