springcloud stream 自定义消息通道 及分组分区

一、自定义消息通道:

引入依赖参见基础入门案例

1、生产者三步骤:

注意注解里用的,yml中用的,发送和接收时用的MYOUTPUT, MYINPUT 成员变量的值

自定义的Myprocessor


使用自定义发送接口

消息的生产者yml:


生产者yml

消费者三步骤:

(1)将上面生产者的 MyProcessor 接口也copy一份到消费者。

(2)接收代码:


监听自定义的MYINPUT

(3)application.yml改造


消费者yml

二、消息分组:

通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启动多个实例 的时候,这些实例都会绑定到同一个消息通道的目标主题(Topic)上。默认情况下,当生产者发出一 条消息到绑定通道上,这条消息会产生多个副本被每个消费者实例接收和处理,但是有些业务场景之 下,我们希望生产者产生的消息只被其中一个实例消费,这个时候我们需要为这些消费者设置消费组来 实现这样的功能。

在同一个group中的多个消费者只有一个可以获取到消息并消费 。只要在消费者配置文件中将同一个服务多个实例配置一个同名称组即可。


yml加入分组

三、消息分区:

有一些场景需要满足, 同一个特征的数据被同一个实例消费, 比如同一个id的传感器监测数据必须被同一 个实例统计计算分析, 否则可能无法获取全部的数据。又比如部分异步任务,首次请求启动task,二次 请求取消task,此场景就必须保证两次请求至同一实例.

 同一个特征的数据被同一个实例消费,也就是同一个特征被同一个消费者消费。


生产者中分区设置


消费者中两处配置分区

你可能感兴趣的:(springcloud stream 自定义消息通道 及分组分区)