涉及的组件: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] osarlistener.BlockingQueueConsumer:无法声明队列:springCloudBus.anonymous.FGZPCPqzTAO2Q06fYCALSA 2018-03-27 09:07:12.851错误21251 --- [[ AO2Q06fYCALSA-6] osarlSimpleMessageListenerContainer:消费者在启动时收到致命异常
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上。位于org.springframework.amqp.rabbit.listener.BlockingQueueConsumer的amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:621)。
引起原因:com.rabbitmq.client.ShutdownSignalException:通道错误;协议方法:#method(回复代码= 404,回复文本= NOT_FOUND-虚拟主机'/'中没有队列'springCloudBus.anonymous.FGZPCPqzTAO2Q06fYCALSA',类别ID = 50,方法ID = 10)
[省略公共帧]原因:com.rabbitmq.client.ShutdownSignalException:通道错误;协议方法:com.rabbitmq上的#method(回复代码= 404,回复文本= NOT_FOUND-虚拟主机'/'中没有队列'springCloudBus.anonymous.FGZPCPqzTAO2Q06fYCALSA',vhost'/',class-id = 50,method-id = 10)。 client.impl.ChannelN.asyncShutdown(ChannelN.java:505)
[省略共同的框架]
2018-03-27 09:07:12.852错误21251 --- [AO2Q06fYCALSA-6] osarlSimpleMessageListenerContainer:停止中止消费者的容器2018-03-27 09:07:12.853 INFO 21251 --- [AO2Q06fYCALSA-6] osarlSimpleMessageListenerContainer:等待供工人完成。2018-03-27 09:07:12.853信息21251-[AO2Q06fYCALSA-6] osarlSimpleMessageListenerContainer:成功地等待工作人员完成。
问什么?-如果默认情况下所有这些都得到照顾,那将是理想的选择吗?**另外,我仍然没有有效的解决方案。需要帮忙”
我刚刚使用Boot 2.0和Finchley.M9(总线2.0.0.M7)进行了测试,没有问题...
2018-03-27 13:25:06.125信息36716 --- [main] csbrpRabbitExchangeQueueProvisioner:声明入站队列:springCloudBus.anonymous.tySvAS8BSpS7OtQ_VCeiVQ,绑定到:springCloudBus
...
2018-03-27 13:26:38.220错误36716-[[127.0.0.1:5672] osarcCachingConnectionFactory:通道关闭:连接错误; 协议方法:#method(回复代码= 320,回复文本= CONNECTION_FORCED-代理强制关闭连接,原因为“关机”,类ID = 0,方法ID = 0)
2018-03-27 13:26:58.757信息36716 --- [pS7OtQ_VCeiVQ-6] osarcCachingConnectionFactory:尝试连接到:[localhost:5672]
2018-03-27 13:26:58.761信息36716-[[pS7OtQ_VCeiVQ-6] osarcCachingConnectionFactory:创建的新连接:rabbitConnectionFactory#52c8295b:5 / SimpleConnection @ 74846ead [delegate = amqp://[email protected]:5672 / ,localPort = 49746]
2018-03-27 13:26:58.762信息36716-[pS7OtQ_VCeiVQ-6] osamqp.rabbit.core.RabbitAdmin:自动声明一个非持久,自动删除或专有队列(springCloudBus.anonymous.tySvAS8BSpS7OtQ_VCeiVQ)持久性:false,自动删除:true,排他性:true。如果连接工厂处于活动状态,则代理将停止并重新启动,它将被重新声明,但是所有消息都将丢失。
在重新建立连接后,RabbitExchangeQueueProvisioner
显式设置一个RabbitAdmin
以重新声明队列。
我将尝试使用旧版本...
编辑
引导1.5.10和Edgware.SR3(总线1.3.3.RELEASE)的结果相同。
编辑2
与1.3.1总线启动器(在1.2.1流兔子中带来)相同的结果。工作正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句