通过函数名
遵循以下规则:
- 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的前缀,以保证这类消息会发送到指定的消费者。
- 匿名消费者,每一个消费者一个自动删除队列,名字是随机的。