Rabbit应用之Stream

89 阅读1分钟

通过函数名

遵循以下规则:

  • input - + -in- +
  • output - + -out- +

如下代码:

@Bean
    public Consumer<Person> log() {
        return person -> {
            System.out.println("Received: " + person);
        };
    }
  • input: bindingName=log-in-0
  • output: bindingName=log-out-0

其中部分主要用于分区使用,当只有一个生产者或消费者时,设置为0即可。

所以分组配置即

spring.cloud.stream.bindings.log-in-0.group=myQ

可以为log-in-0定义一个好记的名字,如下:

# 定义一个名字
spring.cloud.stream.function.bindings.log-in-0=input # 使用名字配置,不用使用 log-in-0
spring.cloud.stream.bindings.input.group=logQ
spring.cloud.stream.bindings.input.destination=logX

有时候重命名后容易找不到函数对应关系,所以尽可能不用

Rabbit映射

  • 默认RabbitMQ绑定器会映射到一个Topic类型的Exchange上。
  • 每一组消费者,会绑定到这个Exchange上的一个队列。
  • 每一个分区的消费者和生产者,以分区索引作为队里名字的后缀,一级作为routingKey的前缀,以保证这类消息会发送到指定的消费者。
  • 匿名消费者,每一个消费者一个自动删除队列,名字是随机的。