Spring 統合を使用して RabbitMQ に接続している Spring Boot プロジェクトで、いくつかのエラーに直面しています。次のような XML ファイルで RabbitMQ の構成を行っています。
<!-- RabbitMQ configuration -->
<rabbit:connection-factory
id="rabbitConnectionFactory_2"
host="${queuing.events.host}"
port="${queuing.events.port}"
username="${queuing.events.username}"
password="${queuing.events.password}"
virtual-host="${queuing.events.virtual-host}"
publisher-returns="true"/>
<rabbit:template id="amqpTemplate_2" connection-factory="rabbitConnectionFactory_2" />
<rabbit:admin id="rabbitAdmin_2" connection-factory="rabbitConnectionFactory_2"/>
<rabbit:listener-container connection-factory="rabbitConnectionFactory_2" auto-startup="true" requeue-rejected="false" />
<bean id="rabbitListenerContainerFactory_2" class="org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory">
<property name="connectionFactory" ref="rabbitConnectionFactory_2"/>
</bean>
<!-- -->
しかし、私は各コンポーネントを 2 つ作成しています。プライマリーを設定するには?
ここで問題が発生しました。Spring Cloud にこのバージョンを使用していました。
<spring-cloud.version>Dalston.SR2</spring-cloud.version>
すべてが正常に機能していましたが、バージョンを次のように更新すると:
<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
このエラーが発生しています:
Description:
Parameter 0 of method rabbitSender in org.springframework.cloud.sleuth.zipkin2.sender.ZipkinRabbitSenderConfiguration required a single bean, but 2 were found:
- rabbitConnectionFactory: defined in null
- rabbitConnectionFactory_2: defined in null
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
そして、この依存関係のためにエラーが発生します:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
この依存関係を削除すると、エラーは発生しません。
このシナリオを再現するサンプル プロジェクトを見つけることができます。pom ファイルには、次のように表示されます。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR2</spring-cloud.version> <!-- it works with this version-->
<!-- <spring-cloud.version>Edgware.RELEASE</spring-cloud.version> --> <!-- doesn't work with this version-->
</properties>
<dependencies>
<!-- SPRING BOOT -->
<!-- it fails because of this dependency in that we are using Edgware.RELEASE version -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
...
https://github.com/fjmpaez911/spring-integration-zipkin-cloud
したがって、RabbitMQ のプライマリ構成を設定する方法を知る必要があります。さらに、このバージョンの Edgware.RELEASEを使用した場合にのみこのエラーが発生するため、問題になる可能性があると思います
何か不足していますか?