涉及的组件:Spring Config-server,Spring AMQP(RabbitMQ),Spring Config-client
目标:使用推送通知通知config-client刷新配置。
配置客户端AMQP版本pom.xml:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
配置服务器pom.xml:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-monitor</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
容错情景: - 打开RabbitMQ服务/集群/实例。 - 所有配置客户端都失去连接。队列被删除,因为它们被创建为自动删除。 - 恢复RabbitMQ服务。
期望:所有配置客户端都应重新成功连接。
现实:这不起作用。请参阅以下错误。
2018-03-27 09:07:12.850 WARN 21251 --- [AO2Q06fYCALSA-6] o.s.a.r.listener.BlockingQueueConsumer:无法申报队列:springCloudBus.anonymous.FGZPCPqzTAO2Q06fYCALSA 2018-03-27 09:07:12.851 ERROR 21251 --- [AO2Q06fYCALSA-6] o.s.a.r.l.SimpleMessageListenerContainer:消费者在启动时收到致命异常
org.springframework.amqp.rabbit.listener.QueuesNotAvailableException:无法为侦听器准备队列。队列不存在或者代理不允许我们使用它。 在org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:548) 在org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer $ AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1335) 在java.base / java.lang.Thread.run(Thread.java:844) 引起:org.springframework.amqp.rabbit.listener.BlockingQueueConsumer $ DeclarationException:无法声明队列:[springCloudBus.anonymous.FGZPCPqzTAO2Q06fYCALSA] 在org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:621) 在org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:520) [省略共同框架] 引起:java.io.IOException:null
引起:com.rabbitmq.client.ShutdownSignalException:通道错误;协议方法:#method(reply-code = 404,reply-text = NOT_FOUND - no queue&#39; springCloudBus.anonymous.FGZPCPqzTAO2Q06fYCALSA&#39; in vhost&#39; /&#39;,class-id = 50,方法-ID = 10)
[常见框架省略] 引起:com.rabbitmq.client.ShutdownSignalException:通道错误;协议方法:#method(reply-code = 404,reply-text = NOT_FOUND - no queue&#39; springCloudBus.anonymous.FGZPCPqzTAO2Q06fYCALSA&#39; in vhost&#39; /&#39;,class-id = 50,方法-ID = 10) 在com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:505)
[常见框架省略]
2018-03-27 09:07:12.852 ERROR 21251 --- [AO2Q06fYCALSA-6] o.s.a.r.l.SimpleMessageListenerContainer:从流产消费者处停止容器 2018-03-27 09:07:12.853 INFO 21251 --- [AO2Q06fYCALSA-6] o.s.a.r.l.SimpleMessageListenerContainer:等待工人完成。 2018-03-27 09:07:12.853 INFO 21251 --- [AO2Q06fYCALSA-6] o.s.a.r.l.SimpleMessageListenerContainer:成功等待工人完成。
问题是什么? - 如果在默认情况下将所有这些都注意到,那么它是否理想。 **我还是没有工作解决方案。需要帮助&#34;
答案 0 :(得分:0)
我刚用Boot 2.0和Finchley.M9(总线2.0.0.M7)测试它没有问题...
2018-03-27 13:25:06.125 INFO 36716 --- [main] c.s.b.r.p.RabbitExchangeQueueProvisioner:声明入站队列:springCloudBus.anonymous.tySvAS8BSpS7OtQ_VCeiVQ,绑定到:springCloudBus
...
2018-03-27 13:26:38.220 ERROR 36716 --- [127.0.0.1:5672] o.s.a.r.c.CachingConnectionFactory:频道关闭:连接错误;协议方法:#method(reply-code = 320,reply-text = CONNECTION_FORCED - 代理强制连接关闭,原因'shutdown',class-id = 0,method-id = 0)
2018-03-27 13:26:58.757 INFO 36716 --- [pS7OtQ_VCeiVQ-6] o.s.a.r.c.CachingConnectionFactory:试图连接到:[localhost:5672]
2018-03-27 13:26:58.761 INFO 36716 --- [pS7OtQ_VCeiVQ-6] osarcCachingConnectionFactory:创建新连接:rabbitConnectionFactory#52c8295b:5 / SimpleConnection @ 74846ead [delegate = amqp://guest@127.0。 0.1:5672 /,localPort = 49746]
2018-03-27 13:26:58.762 INFO 36716 --- [pS7OtQ_VCeiVQ-6] osamqp.rabbit.core.RabbitAdmin:自动声明非持久,自动删除或独占队列(springCloudBus。 anonymous.tySvAS8BSpS7OtQ_VCeiVQ)久包:false,自动删除:true,exclusive:true。如果代理停止并在连接工厂处于活动状态时重新启动,它将被重新声明,但所有消息都将丢失。
RabbitExchangeQueueProvisioner
显式设置RabbitAdmin
以在重新建立连接后重新声明队列。
我现在会试用旧版本......
修改强>
与boot 1.5.10和Edgware.SR3(总线1.3.3.RELEASE)相同的结果。
<强> EDIT2 强>
与1.3.1总线启动器相同的结果(引入1.2.1流兔子)。工作正常。