Spring Cloud Streaming-生产者和消费者的独立连接;消费者

Spring Cloud Streaming-生产者和消费者的独立连接;消费者,spring,spring-cloud-stream,spring-rabbit,Spring,Spring Cloud Stream,Spring Rabbit,我有一个使用RabbitMQ的Spring云流式转换器应用程序。它从兔子队列中读取数据,进行一些转换,然后写入兔子交换。我将我的应用程序部署到PCF,并绑定到Rabbit服务 这很好,但是现在我需要一个单独的连接来使用和生成消息。(我想使用一个连接从兔子队列中读取,并使用另一个连接写入兔子交换)。我将如何配置它?是否可以将我的应用程序绑定到2个不同的Rabbit服务,其中1个作为生产者,1个作为消费者?好吧,从版本1.3开始,Rabbit Binder确实为生产者创建了一个单独的连接工厂: 从1

我有一个使用RabbitMQ的Spring云流式转换器应用程序。它从兔子队列中读取数据,进行一些转换,然后写入兔子交换。我将我的应用程序部署到PCF,并绑定到Rabbit服务


这很好,但是现在我需要一个单独的连接来使用和生成消息。(我想使用一个连接从兔子队列中读取,并使用另一个连接写入兔子交换)。我将如何配置它?是否可以将我的应用程序绑定到2个不同的Rabbit服务,其中1个作为生产者,1个作为消费者?

好吧,从版本
1.3开始,Rabbit Binder确实为生产者创建了一个单独的
连接工厂

从1.3版开始,
RabbitMessageChannelBinder
为非事务性生产者创建一个内部
ConnectionFactory
副本,以避免消费者在共享时死锁,缓存连接因代理上的内存警报而被阻塞

所以,升级到Spring Cloud Stream Ditmars之后,这可能就足够了

更新


如何使用不同的连接属性配置此内部ConnectionFactory副本

不,那是不同的故事。您需要的是多活页夹支持:

您应该为不同的连接工厂声明几个块:

spring.cloud.stream.bindings.input.binder=rabbit1
spring.cloud.stream.bindings.output.binder=rabbit2

...

spring:
  cloud:
    stream:
      bindings:
        input:
          destination: foo
          binder: rabbit1
        output:
          destination: bar
          binder: rabbit2
      binders:
        rabbit1:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: <host1>
        rabbit2:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: <host2>
spring.cloud.stream.bindings.input.binder=rabbit1
spring.cloud.stream.bindings.output.binder=rabbit2
...
春天:
云:
流:
绑定:
输入:
目的地:富
活页夹:兔子1
输出:
目的地:酒吧
活页夹:兔子2
活页夹:
兔子1:
类型:兔
环境:
春天:
rabbitmq:
主持人:
兔子2:
类型:兔
环境:
春天:
rabbitmq:
主持人:

好吧,从版本
1.3开始,Rabbit Binder确实为生产商创建了一个单独的
连接工厂

从1.3版开始,
RabbitMessageChannelBinder
为非事务性生产者创建一个内部
ConnectionFactory
副本,以避免消费者在共享时死锁,缓存连接因代理上的内存警报而被阻塞

所以,升级到Spring Cloud Stream Ditmars之后,这可能就足够了

更新


如何使用不同的连接属性配置此内部ConnectionFactory副本

不,那是不同的故事。您需要的是多活页夹支持:

您应该为不同的连接工厂声明几个块:

spring.cloud.stream.bindings.input.binder=rabbit1
spring.cloud.stream.bindings.output.binder=rabbit2

...

spring:
  cloud:
    stream:
      bindings:
        input:
          destination: foo
          binder: rabbit1
        output:
          destination: bar
          binder: rabbit2
      binders:
        rabbit1:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: <host1>
        rabbit2:
          type: rabbit
          environment:
            spring:
              rabbitmq:
                host: <host2>
spring.cloud.stream.bindings.input.binder=rabbit1
spring.cloud.stream.bindings.output.binder=rabbit2
...
春天:
云:
流:
绑定:
输入:
目的地:富
活页夹:兔子1
输出:
目的地:酒吧
活页夹:兔子2
活页夹:
兔子1:
类型:兔
环境:
春天:
rabbitmq:
主持人:
兔子2:
类型:兔
环境:
春天:
rabbitmq:
主持人:

如何使用不同的连接属性配置此内部ConnectionFactory副本?如何使用不同的连接属性配置此内部ConnectionFactory副本?