Java 兔子消息侦听器执行失败,未设置ErrorHandler。调用参数类型为[class[B]的目标方法失败,

Java 兔子消息侦听器执行失败,未设置ErrorHandler。调用参数类型为[class[B]的目标方法失败,,java,spring,rabbitmq,spring-amqp,Java,Spring,Rabbitmq,Spring Amqp,我正在使用spring amqp rabbitmq,并使用 Message message = MessageBuilder .withBody(item.toString().getBytes()) .setReplyTo("importReply") .setCorrelationId(item.toString().getBytes()).build(); 我的消息处理程序是 public class Foundation { public Message importEx

我正在使用spring amqp rabbitmq,并使用

Message message = MessageBuilder
.withBody(item.toString().getBytes())
.setReplyTo("importReply")
.setCorrelationId(item.toString().getBytes()).build();
我的消息处理程序是

public class Foundation {   
    public Message importExchange(Message exchange) {
        System.out.println("Command:" + exchange.getBody());        
                Message message = MessageBuilder
                .withBody(exchange.getBody().toString().getBytes()).setCorrelationId(exchange.getMessageProperties().getCorrelationId()                                  .toString().getBytes()).build();

        return message; 
    }
}
我用钩子钩住了它

<rabbit:listener-container
    connection-factory="rabbitConnectionFactory" concurrency="10">
    <rabbit:listener queues="${rabbitmq.import.queue}"
        ref="foundation" method="importExchange" />
    <rabbit:listener queues="${rabbitmq.import.reply.queue}"
        ref="importExchangeItemWriter" method="replyHandler" />
</rabbit:listener-container>
同样的问题也发生在制片人方面

public void replyHandler(Message message) {
    System.out.println("In Reply Handler:" + message.getMessageProperties().getCorrelationId());

}

另外,如果importExchange中存在异常,我如何在replyHandler中获取异常?

由于您使用POJO进行消息侦听,因此无法处理消息

您的
基金会#importExchange
应该接受消息正文(在您的情况下是
字节[]
) 并返回适合作为回复消息正文的内容

replyHandler
只需实现
MessageListener


该框架将为您提供相关内容。

或者您可以添加
.setContentType=“text/plain”
转换器将能够为您转换为字符串。

刚刚更新了importExchange,我想将message对象发送回replyHandler以检查相关性,我看到了。只需尝试按照我的建议执行我想按照用例进行相关性,我想先异步发送所有消息,而不等待答复,然后再发送等待回复。我希望我的replyHandler使用回复消息触发,我应该知道我收到的是哪封邮件的回复。通过关联和回复,你做的一切都是正确的。你的问题是POJO。只需将
replyHandler
设置为
MessageListener
,你就会正确地收到回复消息。但是你的
importExchange
不应该处理
消息
对象。还有一个小问题,如果importExchange中有异常,我如何在replyHandler中获取异常?是的,我做了同样的事情。谢谢
public void replyHandler(Message message) {
    System.out.println("In Reply Handler:" + message.getMessageProperties().getCorrelationId());

}