新版提倡用函数式进行发送和消费信息
定义返回类型为Supplier, Function or Consumer的bean提供消息发送和消费的bean
单个消费者不自动创建用function
spring:
cloud:
function:
definition: consumerEvent
绑定名称命名规则
input - + -in- +
output - + -out- +
在配置文件中指定spring.cloud.function.definition的名称后会把这个bean绑定到对应的消费者和提供者上.
如下定义 会把bean绑定在消费者consumerEvent-in-0或者提供者consumerEvent-out-0上
多个bean可以用;进行分割(一定注意;分割)
列子
cloud:
stream:
default-binder: cogoMq
rabbit: #多集群的情况下仍然需要配置在该目录下
bindings:
fundEnterResult-in-0:
fundEnterResult:
acknowledgeMode: manual
tradeRiskAuditResult-in-0:
tradeRiskAuditResult:
acknowledgeMode: manual
vaStatusChange-out-0:
producer:
bindQueue: false
exchangeType: direct
declareExchange: false
exchangeAutoDelete: false
queueNameGroupOnly: true
bindings:
fundEnterResult-in-0:
destination: demo #交换器名称
group: test #队列名称
binder: cogoMq #绑定器
tradeRiskAuditResult-in-0:
destination: demo1 #交换器名称
group: test1 #队列名称
binder: cogoMq #绑定器
vaStatusChange-out-0:
destination: demo2 #交换器名称
group: test2 #队列名称
binders:
cogoMq:
type: rabbit
environment: #可用于自定义绑定器环境的一组属性,设置这个属性后,可以实现Binder组件和应用组件的隔离 默认值:空
spring:
rabbitmq:
host: ****
port: ****
username: ****
password: ****
publisher-confirm-type: correlated
publisher-returns: true
virtual-host: /
ssl:
enabled: false
function:
definition: fundEnterResult;tradeRiskAuditResult
坑
1.jar包里的注释用的|(分割)
> /**
> * Definition of the function to be used. This could be function name (e.g., 'myFunction')
> * or function composition definition (e.g., 'myFunction|yourFunction')
> */
> private String definition;
2.官方文档里的说明也是
and modify the `spring.cloud.function.definition` property to reflect your intention to compose a new function from both ‘toUpperCase’ and ‘wrapInQuotes’. To do so Spring Cloud Function relies on `|` (pipe) symbol. So, to finish our example our property will now look like this:
--spring.cloud.function.definition=toUpperCase|wrapInQuotes
spring cloud 2020 默认不使用bootstrap启动 要加这个依赖spring-cloud-starter-bootstrap
```
api('org.springframework.cloud:spring-cloud-starter-bootstrap')