官网
构造图
使用Binder作为中间件进行连接应用以及外界
Binder
一谈到中间件就得说道spi,跟api一样也是接口,但是spi用于进行扩展的接口。
相关配置
扩展接口
路径发现
参考
SPI存在的意义
比如这里面也支持kafka,当实现完功能之后只需要切换不同的配置,即可更换不同的实现。这就是spi的用处。
Spring Cloud Stream注解
注解 | 作用 |
---|---|
@EnableBinding (参数看表格第三行) | |
@Input,@OutPut当注入MessageChannel需要注意 | |
Source, Sink, and Processor | |
@StreamListener | |
@InboundChannelAdapter(下面那个方法变压器,就是对消息进行加工) | |
@Payload, @Headers and @Header,@SendTo |
配置
spring:
binders:
rabbitmq:
type: rabbit
这个就是SPI指定rabbit扩展
还有包括rabbitmq的配置咯~
官网配置
批量预处理能力
比如说大批量处理消息,可以通过
- 增加消费者数量
- 提高消费者消费单个消息的速度
- 让消费者有更大的 prefetch 值
prefetch 值以及加大消费者的参数
参考文章
Dead-Letter Queue Processing
mq私信队列的处理,这里就要谈到TTL(Time To Live),消息的有效时间。当超过ttl之后会失效处理。
消息没有被及时消费的原因:
a.消息被拒绝(basic.reject/ basic.nack)并且不再重新投递 requeue=false
b.TTL(time-to-live) 消息超时未消费
c.达到最大队列长度
这个本人没有详细的动手操作过,只能靠网上文章意淫了,西西~
就是当队列里头有死信的时候,会发布到对应设置的Exchange进行处理,路由到另一个队列。