Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 使用rabbitmq消息时,getting method not found异常_Spring Boot_Rabbitmq_Spring Amqp_Spring Rabbit_Rabbitmq Exchange - Fatal编程技术网

Spring boot 使用rabbitmq消息时,getting method not found异常

Spring boot 使用rabbitmq消息时,getting method not found异常,spring-boot,rabbitmq,spring-amqp,spring-rabbit,rabbitmq-exchange,Spring Boot,Rabbitmq,Spring Amqp,Spring Rabbit,Rabbitmq Exchange,已在使用者类上创建以使用来自rabbitMQ GUI的消息 但是,当我从rabbitMQ GUI发布任何消息时,找不到它的给定错误类。控制台上不断打印错误 问题可能是rabbitGUI以字节的形式发送消息,而我正试图以字符串形式接收它 我想调用基于消息体的特定方法 @组件 @RabbitListener(队列={“#{addNeRangeQueue.name}}”) 公共类消费控制器{ @猎兔人 公共无效接收(字符串消息){ System.out.println(“兔子mq侦听器接收:+消息”)

已在使用者类上创建以使用来自rabbitMQ GUI的消息

但是,当我从rabbitMQ GUI发布任何消息时,找不到它的给定错误类。控制台上不断打印错误

问题可能是rabbitGUI以字节的形式发送消息,而我正试图以字符串形式接收它

我想调用基于消息体的特定方法

@组件
@RabbitListener(队列={“#{addNeRangeQueue.name}}”)
公共类消费控制器{
@猎兔人
公共无效接收(字符串消息){
System.out.println(“兔子mq侦听器接收:+消息”);
}
}
@配置
公共类RabbitMQConsumerConfig{
//我在这里删除的属性值配置。
@豆子
公共队列addNeRangeQueue(){
返回新队列(queueName,false);
}
@豆子
公共TopiceExchange getTopicEchangeName(){
返回新的TopiceExchange(exchange);
}
@豆子
公共绑定bindaddNeRange(TopiceExchange getTopicEchangeName,Queue addNeRangeQueue){
返回BindingBuilder.bind(addNeRangeQueue).to(getTopicEchangeName).with(routingkey);
}
}
例外情况:

2020-09-08 00:19:10.378  WARN 9456 --- [ntContainer#0-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.
    
    org.springframework.amqp.rabbit.support.ListenerExecutionFailedException: Listener threw exception
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:1705) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1595) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1510) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1498) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:1489) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1433) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:970) [spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:916) [spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1600(SimpleMessageListenerContainer.java:83) [spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.mainLoop(SimpleMessageListenerContainer.java:1291) [spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1197) [spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at java.lang.Thread.run(Unknown Source) [na:1.8.0_211]
    Caused by: org.springframework.amqp.AmqpException: No method found for class [B
        at org.springframework.amqp.rabbit.listener.adapter.DelegatingInvocableHandler.getHandlerForPayload(DelegatingInvocableHandler.java:151) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.adapter.DelegatingInvocableHandler.getMethodFor(DelegatingInvocableHandler.java:270) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.adapter.HandlerAdapter.getMethodFor(HandlerAdapter.java:84) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.invokeHandlerAndProcessResult(MessagingMessageListenerAdapter.java:146) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:133) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1591) ~[spring-rabbit-2.2.10.RELEASE.jar:2.2.10.RELEASE]
        ... 10 common frames omitted
   

    

从UI发布时,必须添加
内容类型
属性,以便消息转换器知道将
字节[]
消息正文转换为什么

使用方法级
@RabbitListener
,转换器可以从方法参数推断类型-这在类级注释中是不可能的,因为我们需要先进行转换以确定调用哪个方法

对于默认值为
SimpleMessageConverter
的简单字符串:

当使用JSON(以及
Jackson2JsonMessageConverter
)时:


谢谢,是的,我使用Jackson2JsonMessageConverter转换来自rabbitMQ GUI的消息,但效果不理想。