当前位置:   article > 正文

springBoot 整合 RabbitMQ 的坑_consumer raised exception, processing can restart

consumer raised exception, processing can restart if the connection factory

1、Consumer raised exception, processing can restart if the connection factory supports it. Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused

这个很明显,没有连接配置。增加一个配置文件。

(笨方式,测试用,实际可采用配置文件方式。)

  1. @Configuration
  2. public class RabbitMqConfig {
  3. @Bean
  4. public ConnectionFactory connectionFactory() {
  5. CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
  6. connectionFactory.setAddresses("192.168.10.10:5672");
  7. connectionFactory.setUsername("nei");
  8. connectionFactory.setPassword("zhao");
  9. connectionFactory.setVirtualHost("vhost_nei");
  10. connectionFactory.setPublisherConfirms(true);//消息确认
  11. connectionFactory.setPublisherReturns(true);
  12. return connectionFactory;
  13. }
  14.   //注意此下两个bean 有用 有坑时用到
  15. @Bean
  16. public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
  17. RabbitTemplate template = new RabbitTemplate(connectionFactory);
  18. template.setMessageConverter(new Jackson2JsonMessageConverter());
  19. return template;
  20. }
  21. @Bean
  22. public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
  23. SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
  24. factory.setConnectionFactory(connectionFactory);
  25. factory.setMessageConverter(new Jackson2JsonMessageConverter());
  26. return factory;
  27. }
  28. }

2、队列不存在

  1. org.springframework.amqp.rabbit.listener.QueuesNotAvailableException: Cannot prepare queue for listener. Either the queue doesn't exist or the broker will not allow us to use it.
  2. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:514)
  3. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1280)
  4. at java.lang.Thread.run(Thread.java:745)
  5. Caused by: org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[hello]
  6. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:587)
  7. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:486)
  8. ... 2 common frames omitted
  9. Caused by: java.io.IOException: null
  10. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
  11. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
  12. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
  13. at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:885)
  14. at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:61)
  15. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  16. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  17. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  18. at java.lang.reflect.Method.invoke(Method.java:498)
  19. at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:917)
  20. at com.sun.proxy.$Proxy140.queueDeclarePassive(Unknown Source)
  21. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:566)
  22. ... 3 common frames omitted
  23. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'hello' in vhost '/', class-id=50, method-id=10)
  24. at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
  25. at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
  26. at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:361)
  27. at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:226)
  28. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
  29. ... 12 common frames omitted
  30. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'hello' in vhost '/', class-id=50, method-id=10)
  31. at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:484)
  32. at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:321)
  33. at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)
  34. at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)
  35. at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:560)
  36. ... 1 common frames omitted
  37. 14:38:51.463 [SimpleAsyncTaskExecutor-1] ERROR o.s.a.r.l.SimpleMessageListenerContainer - Stopping container from aborted consumer
  38. 14:38:51.478 [localhost-startStop-1] ERROR o.s.boot.SpringApplication - Application startup failed
  39. org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.amqp.rabbit.config.internalRabbitListenerEndpointRegistry'; nested exception is org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup
  40. at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)
  41. at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
  42. at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
  43. at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
  44. at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
  45. at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:874)
  46. at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144)
  47. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
  48. at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
  49. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
  50. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
  51. at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
  52. at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151)
  53. at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131)
  54. at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
  55. at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
  56. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5183)
  57. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  58. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403)
  59. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
  60. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  61. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  62. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  63. at java.lang.Thread.run(Thread.java:745)
  64. Caused by: org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup
  65. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doStart(SimpleMessageListenerContainer.java:820)
  66. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:550)
  67. at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.startIfNecessary(RabbitListenerEndpointRegistry.java:272)
  68. at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.start(RabbitListenerEndpointRegistry.java:235)
  69. at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
  70. ... 23 common frames omitted
  71. Caused by: org.springframework.amqp.rabbit.listener.QueuesNotAvailableException: Cannot prepare queue for listener. Either the queue doesn't exist or the broker will not allow us to use it.
  72. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:514)
  73. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1280)
  74. ... 1 common frames omitted
  75. Caused by: org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[hello]
  76. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:587)
  77. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:486)
  78. ... 2 common frames omitted

3、无限循环报 org.springframework.amqp.AmqpException: No method found for class 。。。  我的是找不到HashMap。实际应该是一些官方BUG,参照一位网友的解决方案。:

https://www.cnblogs.com/lazio10000/p/5559999.html (感谢)

  1. @Bean
  2. public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
  3. RabbitTemplate template = new RabbitTemplate(connectionFactory);
  4. template.setMessageConverter(new Jackson2JsonMessageConverter());
  5. return template;
  6. }
  7. @Bean
  8. public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
  9. SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
  10. factory.setConnectionFactory(connectionFactory);
  11. factory.setMessageConverter(new Jackson2JsonMessageConverter());
  12. return factory;
  13. }

消费者里添加  containerFactory="rabbitListenerContainerFactory"  @Payload

  1. @RabbitListener(queues = "task", containerFactory="rabbitListenerContainerFactory")
  2. public void process(@Payload String str) {
  3. logger.info("============="+str);
  4. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/994016
推荐阅读
相关标签
  

闽ICP备14008679号