spring boot中集成rabbitMQ启动报错

图片说明
一直无线重启,测试方式用debug模式,程序能跑完,还是报错

2017-03-29 17:59:53.250 WARN 30172 --- [cTaskExecutor-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.

org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:876) ~[spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:786) ~[spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:706) ~[spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:96) [spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:187) ~[spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1274) [spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:687) ~[spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:1217) [spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:1187) [spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1600(SimpleMessageListenerContainer.java:96) [spring-rabbit-1.7.1.RELEASE.jar:na]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1414) [spring-rabbit-1.7.1.RELEASE.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
Caused by: org.springframework.amqp.AmqpException: No method found for class [B
一直报错找不到没有找到方法类

Sender代码
@Component
public class HelloSender {

@Autowired
private AmqpTemplate amqpTemplate;

public void send() {
    String context = "hello " + new Date();
    System.out.println("Sender : " + context);
    this.amqpTemplate.convertAndSend("hello", context);
}

Receiver代码
@Component
@RabbitListener(queues = "hello")
public class HelloReceiver {

@RabbitHandler
public void process(String hello) {

    System.out.println("Receiver  : " + hello);
}

}

config配置代码
@Configuration
public class RabbitConfig {

@Bean
public Queue helloQueue() {

    return new Queue("hello");
}

@Bean
public Queue neoQueue() {


    return new Queue("neo");
}

@Bean
public Queue objectQueue() {

    return new Queue("object");
}

}

测试代码
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloTest {

@Autowired
private HelloSender helloSender;

@Test
public void hello() throws Exception {
    helloSender.send();
}

}

@Component
@RabbitListener(queues = "object")
public class ObjectReceiver {

@RabbitHandler
public void process(User user) {

    System.out.println("Receiver object : " + user);
}

}

@Component
public class ObjectSender {

@Autowired
private AmqpTemplate amqpTemplate;

public void send(User user) {
    System.out.println("Sender object: " + user.toString());
    this.amqpTemplate.convertAndSend("object", user);
}

}

这是代码

HelloReceiver 类的注解使用有问题,----@RabbitListener 注解是方法级别的,不能用在class上。
正确的代码如下:

@Component

public class ObjectReceiver {

@RabbitListener(queues = "object")
@RabbitHandler
public void process(User user) {

System.out.println("Receiver object : " + user);

}

}

真的是 @RabbitListener 注解问题,我也写到class类上了,换到方法上果然ok 感谢~ :)

可能是实体没有序列化,实现序列化试试