Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何设置主兔子模板和兔子连接工厂_Spring Boot_Spring Integration_Spring Cloud_Spring Rabbit_Zipkin - Fatal编程技术网

Spring boot 如何设置主兔子模板和兔子连接工厂

Spring boot 如何设置主兔子模板和兔子连接工厂,spring-boot,spring-integration,spring-cloud,spring-rabbit,zipkin,Spring Boot,Spring Integration,Spring Cloud,Spring Rabbit,Zipkin,我在一个spring引导项目中遇到了一些错误,我正在使用spring集成连接到RabbitMQ。我正在XML文件中对RabbitMQ进行如下配置: <!-- RabbitMQ configuration --> <rabbit:connection-factory id="rabbitConnectionFactory_2" host="${queuing.events.host}" port="${queuing.events.

我在一个spring引导项目中遇到了一些错误,我正在使用spring集成连接到RabbitMQ。我正在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>
<!--  -->
<!-- Here the primary connection -->
<bean id="rabbitConnectionFactory" primary="true" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
    <constructor-arg value="${spring.rabbitmq.host}"/>
    <property name="username" value="${spring.rabbitmq.username}"/>
    <property name="password" value="${spring.rabbitmq.password}"/>
    <property name="virtualHost" value="${spring.rabbitmq.virtual-host}"/>
</bean>

<!-- 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>
而错误是由于这种依赖关系而产生的:

    <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>
    ...
因此,我需要知道如何为RabbitMQ设置主配置,此外,我认为这可能是一个问题,因为只有在使用此版本Edgware.RELEASE时才会出现此错误


我遗漏了什么吗?

fran,在Edgware.RELEASE中,spring cloud sleuth zipkin将解析zipkin 2依赖项尝试使用spring cloud starter zipkin legacy来代替

要在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>
<!--  -->
<!-- Here the primary connection -->
<bean id="rabbitConnectionFactory" primary="true" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
    <constructor-arg value="${spring.rabbitmq.host}"/>
    <property name="username" value="${spring.rabbitmq.username}"/>
    <property name="password" value="${spring.rabbitmq.password}"/>
    <property name="virtualHost" value="${spring.rabbitmq.virtual-host}"/>
</bean>

<!-- 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>

哈坦,这个改变解决了我面临的错误,非常感谢!但我仍然想知道如何在XML文件中为RabbitMQ定义@Primary配置。
<!-- Here the primary connection -->
<bean id="rabbitConnectionFactory" primary="true" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
    <constructor-arg value="${spring.rabbitmq.host}"/>
    <property name="username" value="${spring.rabbitmq.username}"/>
    <property name="password" value="${spring.rabbitmq.password}"/>
    <property name="virtualHost" value="${spring.rabbitmq.virtual-host}"/>
</bean>

<!-- 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>