使用RabbitTemplate发布消息时发生java.lang.IllegalArgumentException
我试图用rabbitmplate(使用springboot)在队列上发布一条消息,得到了这条消息。我已经试着寻找解决办法了使用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
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在下面提到的内容。您需要使对象可序列化。请看一些发送消息的示例,这些示例与此处的用例类似。