最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

SpringCloud——消息驱动——Stream

维修 admin 42浏览 0评论

SpringCloud——消息驱动——Stream

1.什么是消息驱动

        消息驱动就是屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。目前仅支持RabbitMQ、Kafka。

2.消息中间件有什么问题,stream靠什么实现?

        如果我们项目用到了RabbitMQ和Kafka,由于这两个消息中间件的架构上的不同,之前的业务都是使用的rabbitmq,但是现在想往kafka进行迁移,这样一大堆东西都要重新做,很麻烦。

        Stream通过定义绑定器Binder作为中间层,实现了应用程序与消息中间件细节之间的隔离。Binder可以动态的改变消息类型(kafka的topic,RabbitMq的exchange),也可以生成Binding,Binding用来绑定消息容器生产者消费者,它有两种类型,INPUT和OUTPUT,INPUT对应于消费者,OUTPUT对应于生产者。如下图(以RabbitMQ举例):

        Source代表的就是往通道放入消息,Sink代表从通道取出信息,通过@EnableBinding注解与Channel绑定到一起。

3.分组消费与持久化问题

3.1分组消费

        我们配置了8001为生产者,8002和8003为消费者,通过测试我们发现,8001只发送了一份消息,但是8002和8003都能同时消费,原因是他们不是一个组别的,没有竞争。如下:

Queue studyExchange.anonymous.J4KZ16HmQICdqo3ohNQ4xQ 8002

Queue studyExchange.anonymous.K7TbP3ZfSJ2PYkg3EEKtQw 8003

        我们在8002和8003的yml文件中添加group:atguiguA,使得两个消费者在同一个组中,这样一份消息只能被一个消费者拿到,采用轮询拿取。

3.2持久化问题

        我们发现给消费端手动配置了group还有一个作用,生产者发送的消息到通道中,就算消费者没有启动,消息也会保留到通道,而配置了group的消费者启动后会去通道中拿消息,没有配置group的消费者则不会去读取。

 

SpringCloud——消息驱动——Stream

1.什么是消息驱动

        消息驱动就是屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。目前仅支持RabbitMQ、Kafka。

2.消息中间件有什么问题,stream靠什么实现?

        如果我们项目用到了RabbitMQ和Kafka,由于这两个消息中间件的架构上的不同,之前的业务都是使用的rabbitmq,但是现在想往kafka进行迁移,这样一大堆东西都要重新做,很麻烦。

        Stream通过定义绑定器Binder作为中间层,实现了应用程序与消息中间件细节之间的隔离。Binder可以动态的改变消息类型(kafka的topic,RabbitMq的exchange),也可以生成Binding,Binding用来绑定消息容器生产者消费者,它有两种类型,INPUT和OUTPUT,INPUT对应于消费者,OUTPUT对应于生产者。如下图(以RabbitMQ举例):

        Source代表的就是往通道放入消息,Sink代表从通道取出信息,通过@EnableBinding注解与Channel绑定到一起。

3.分组消费与持久化问题

3.1分组消费

        我们配置了8001为生产者,8002和8003为消费者,通过测试我们发现,8001只发送了一份消息,但是8002和8003都能同时消费,原因是他们不是一个组别的,没有竞争。如下:

Queue studyExchange.anonymous.J4KZ16HmQICdqo3ohNQ4xQ 8002

Queue studyExchange.anonymous.K7TbP3ZfSJ2PYkg3EEKtQw 8003

        我们在8002和8003的yml文件中添加group:atguiguA,使得两个消费者在同一个组中,这样一份消息只能被一个消费者拿到,采用轮询拿取。

3.2持久化问题

        我们发现给消费端手动配置了group还有一个作用,生产者发送的消息到通道中,就算消费者没有启动,消息也会保留到通道,而配置了group的消费者启动后会去通道中拿消息,没有配置group的消费者则不会去读取。

 

发布评论

评论列表 (0)

  1. 暂无评论