当前Spring Cloud Rabbit的版本为2.1.2
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
问题描述:Spring Cloud Stream 多rabbitmq实例配置时启动项目时报以下错误提示:
org.springframework.context.ApplicationContextException: Failed to start bean 'outputBindingLifecycle'; nested exception is java.lang.IllegalStateException: A default binder has been requested, but there is more than one binder available for 'org.springframework.cloud.stream.messaging.DirectWithAttributesChannel' : rabbit,cqmq, and no default binder has been set.
yml里面关于Spring Cloud RabbitMQ的配置内容如下:
spring:
cloud:
stream:
binders:
#配置一个名为"rabbit1"的rabbit类型的实例
rabbit1:
type: rabbit
environment:
spring:
rabbitmq:
host: 192.168.1.105
port: 5672
virtual-host: /
username: 账号
password: 账号
#配置一个名为"rabbit2"的rabbit类型的实例
rabbit2:
type: rabbit
environment:
spring:
rabbitmq:
host: 192.168.1.106
port: 5672
virtual-host: /
username: 账号
password: 账号
解决方法:
Spring Cloud Stream 多rabbitmq实例配置时,一定要设置一个默认binder,否则启动会报错
spring.cloud.stream.default-binder=rabbit1
最终配置修改为:
spring:
cloud:
stream:
#设置一个默认的binder
default-binder: rabbit1
binders:
#配置一个名为"rabbit1"的rabbit类型的实例
rabbit1:
type: rabbit
environment:
spring:
rabbitmq:
host: 192.168.1.105
port: 5672
virtual-host: /
username: 账号
password: 账号
#配置一个名为"rabbit2"的rabbit类型的实例
rabbit2:
type: rabbit
environment:
spring:
rabbitmq:
host: 192.168.1.106
port: 5672
virtual-host: /
username: 账号
password: 账号