【发布时间】:2020-11-25 21:01:58
【问题描述】:
我正在使用 Spring Boot 2.2.9.RELEASE 和 Spring Cloud Hoxton.SR7。我正在使用 Spring Cloud Bus 向 docker swarm 堆栈中的所有容器发出信号,并且当使用正在运行的 RabbitMQ 集群部署在生产环境中时,一切正常!
我正在通过 spring-cloud-starter-bus-amqp Spring Boot 启动器使用 RabbitMQ 实现。我们偶尔会在不需要总线的情况下运行测试。为此有一个弹簧启动标志:
spring.cloud.bus.enabled=false
这会禁用总线,但rabbitMQ 仍然会启动,并吐出连接被拒绝的错误。我还必须补充:
rabbitmq.autoStarting=false
我尝试过禁用 RabbitMQ 的自动配置,但似乎有一个 RabbitAutoConfiguration 类暗示它是一个 SB 自动配置类,但实际上它是一个普通的 SB 配置类。
是否有更简洁的方法来禁用云总线,同时阻止 RabbitMQ 启动?
【问题讨论】:
-
禁用总线并不会禁用rabbitmq binder for spring cloud stream。我不确定是否有办法通过属性来做到这一点。
-
好的,您能建议一种以编程方式执行此操作的方法吗?我可以添加一些我自己的条件配置。
-
有一个TestBinder available 似乎可以解决问题。如果我按照链接中的说明包含它,那么 rabbitMQ binder 将被忽略。我将尝试排除 autoconfig 技巧作为配置文件,因为我必须将测试绑定器携带到实际部署的 docker 容器中以运行集成测试。
-
是的,包括在进行“真实”生产部署(RabbitMQ 可用)时触发的自动配置排除。我有点喜欢这样,我可以只使用 SpringBoot 配置来实现我的目标,这要感谢 TestBinder
标签: spring-boot rabbitmq spring-cloud spring-cloud-bus