使用RabbitTemplate发布消息时发生java.lang.IllegalArgumentException

使用RabbitTemplate发布消息时发生java.lang.IllegalArgumentException,java,spring-boot,rabbitmq,amqp,Java,Spring Boot,Rabbitmq,Amqp,我试图用rabbitmplate(使用springboot)在队列上发布一条消息,得到了这条消息。我已经试着寻找解决办法了 Caused by: java.lang.IllegalArgumentException: SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.example.demo.SimpleMessage 也许这部分代码会有所帮助 @Overri

我试图用rabbitmplate(使用springboot)在队列上发布一条消息,得到了这条消息。我已经试着寻找解决办法了

Caused by: java.lang.IllegalArgumentException: SimpleMessageConverter only supports String, byte[] and Serializable payloads, received: com.example.demo.SimpleMessage
也许这部分代码会有所帮助

@Override
    public void run(String...strings) throws Exception {

        SimpleMessage simpleMessage = new SimpleMessage();
        simpleMessage.setName("FirstMessage");
        simpleMessage.setDescription("simpleDescription");

        rabbitTemplate.convertAndSend("TestExchange", "testRouting", simpleMessage);
    }

我非常感谢您的合作。

问题是您的类
SimpleMessage
没有实现
可序列化的

rabbitmplate.convertAndSend
使用
simpleMessageConverter
将消息转换为amqp消息。但是,
SimpleMessageConverter
需要该消息来实现接口
Serializable

您的
SimpleMessage
类应该如下所示:

public class SimpleMessage implements Serializable {
    ... your code here
}

您可以了解有关可序列化对象的更多信息。

正在调用某个
SimpleMessageConverter.createMessage
。我不记得convertAndSend是否为您调用了它。查看spring的源代码convertAndSend,调用
MessageConverter.toMessage
,调用
MessageConverter.createMessage
,由于这是
SimpleMessage
的一个实例,我们得到了
SimpleMessageConverter.createMessage
。同意Dylan在下面提到的内容。您需要使对象可序列化。请看一些发送消息的示例,这些示例与此处的用例类似。