Spring boot 整合RabbitMQ踩过的坑

参考了一下官方的例子,发现整合RabbitMQ挺简单的,代码如下

@Component
@RabbitListener(queues = "queue2")
public class FanoutReceiverA {

    @RabbitHandler
    public void process(String message) {
        System.err.println("fanout Receiver 2: " + message);
    }

}

但是当我从RabbitMQ的后台给这个队列发送消息的时候,却一直重复报错,

Caused by: org.springframework.amqp.AmqpException: No method found for class

WARN[0;39m [35m71876[0;39m [2m---[0;39m [2m[cTaskExecutor-1][0;39m [36ms.a.r.l.ConditionalRejectingErrorHandler[0;39m [2m:[0;39m Execution of Rabbit message listener failed.

org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:1569) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1480) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1400) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1387) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1366) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:848) [spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:832) [spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$700(SimpleMessageListenerContainer.java:78) [spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1073) [spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_161]
Caused by: org.springframework.amqp.AmqpException: No method found for class [B
	at org.springframework.amqp.rabbit.listener.adapter.DelegatingInvocableHandler.getHandlerForPayload(DelegatingInvocableHandler.java:149) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.adapter.DelegatingInvocableHandler.getMethodNameFor(DelegatingInvocableHandler.java:253) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.adapter.HandlerAdapter.getMethodAsString(HandlerAdapter.java:71) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:198) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:127) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1477) ~[spring-rabbit-2.1.0.RELEASE.jar:2.1.0.RELEASE]
	... 8 common frames omitted

无奈只能在网上查找资料,也有人遇到这个坑,原来将@RabbitListener(queues = "queue2")这个注解放到方法上就可以了

@Component
public class FanoutReceiverA {

    @RabbitListener(queues = "queue2")
    @RabbitHandler
    public void process(Message message) {
		String body;
		try {
			body = new String(message.getBody(),"UTF-8");
			System.err.println("fanout Receiver 2: " + body);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
    }

}

再次从RabbitMQ后台发送消息,能正常监听并消费消息

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值