RabbitMQ Failed to convert message.No method found for class java.lang.String问题解决

矫情吗;* 2023-10-01 18:36 45阅读 0赞

问题描述:

org.springframework.amqp.rabbit.support.ListenerExecutionFailedException: Failed to convert message
Caused by: org.springframework.amqp.AmqpException: No method found for class java.lang.String

问题分析:

1、消息生产者发送的消息类型为String,消息消费者接收的消息类型为Message,导致接收的时候类型转换不对。

  1. @Component
  2. public class MessageProvider {
  3. @Autowired
  4. private RabbitTemplate rabbitTemplate;
  5. public void send(String exchange,String routingKey,String content){
  6. rabbitTemplate.convertAndSend(exchange,routingKey,content);
  7. }
  8. }
  9. @Component
  10. @RabbitListener(queues = "directqueue2")
  11. public class MessageReceiver {
  12. @RabbitHandler
  13. public void process(Message message) throws InterruptedException {
  14. Thread.sleep(1000);
  15. }
  16. }

解决办法:消息生产者发送的消息类型和消息消费者接收的消息类型一致即可。

  1. @Component
  2. public class MessageProvider {
  3. @Autowired
  4. private RabbitTemplate rabbitTemplate;
  5. public void send(String exchange,String routingKey,String content){
  6. rabbitTemplate.convertAndSend(exchange,routingKey,content.getBytes());
  7. }
  8. }
  9. @Component
  10. @RabbitListener(queues = "directqueue2")
  11. public class MessageReceiver {
  12. @RabbitHandler
  13. public void process(byte[] message) throws InterruptedException {
  14. Thread.sleep(1000);
  15. }
  16. }

发表评论

表情:
评论列表 (有 0 条评论,45人围观)

还没有评论,来说两句吧...

相关阅读