文章 2021-12-17 来自:开发者社区

Spring Cloud Stream如何消费自己生产的消息

在上一篇《Spring Cloud Stream如何处理消息重复消费》中,我们通过消费组的配置解决了多实例部署情况下消息重复消费这一入门时的常见问题。本文将继续说说在另外一个被经常问到的问题:如果微服务生产的消息自己也想要消费一份,应该如何实现呢?常见错误在放出标准答案前,先放出一个常见的错误姿势和告警信息(以便您可以通过搜索引擎找到这里^_^)。以下错误基于Spring Boot 2.0.5、....

文章 2021-12-17 来自:开发者社区

Spring Cloud Stream消费失败后的处理策略(一):自动重试

之前写了几篇关于Spring Cloud Stream使用中的常见问题,比如:如何处理消息重复消费如何消费自己生产的消息下面几天就集中来详细聊聊,当消息消费失败之后该如何处理的几种方式。不过不论哪种方式,都需要与具体业务结合,解决不同业务场景可能出现的问题。今天第一节,介绍一下Spring Cloud Stream中默认就已经配置了的一个异常解决方案:重试!应用场景依然要明确一点,任何解决方案都....

文章 2021-12-17 来自:开发者社区

Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)

应用场景前两天我们已经介绍了两种Spring Cloud Stream对消息失败的处理策略:自动重试:对于一些因环境原因(如:网络抖动等不稳定因素)引发的问题可以起到比较好的作用,提高消息处理的成功率。自定义错误处理逻辑:如果业务上,消息处理失败之后有明确的降级逻辑可以弥补的,可以采用这种方式,但是2.0.x版本有Bug,2.1.x版本修复。那么如果代码本身存在逻辑错误,无论重试多少次都不可能成....

Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
文章 2021-12-17 来自:开发者社区

Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试功能:重新入队。动手试试准备一个会消费失败的例子,可以直接沿用前文的工程,也可以新建一个,然后创建如下代码的逻辑:@EnableBinding(TestApplicati....

文章 2021-12-17 来自:开发者社区

Spring Cloud Stream同一通道根据消息内容分发不同的消费逻辑

应用场景有的时候,我们对于同一通道中的消息处理,会通过判断头信息或者消息内容来做一些差异化处理,比如:可能在消息头信息中带入消息版本号,然后通过if判断来执行不同的处理逻辑,其代码结构可能是这样的:@StreamListener(value = TestTopic.INPUT) public void receiveV1(String payload, @Header("version") St....

文章 2021-12-17 来自:开发者社区

Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)

应用场景我们在使用一些开源调度系统(比如:elastic-job等)的时候,对于任务的执行时间通常都是有规律性的,可能是每隔半小时执行一次,或者每天凌晨一点执行一次。然而实际业务中还存在另外一种定时任务,它可能需要一些触发条件才开始定时,比如:编写博文时候,设置2小时之后发送。对于这些开始时间不确定的定时任务,我们也可以通过Spring Cloud Stream来很好的处理。为了实现开始时间不确....

Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)
文章 2021-12-03 来自:开发者社区

Spring cloud stream【消息分区】

在上篇文章中我们给大家介绍了Stream的消息分组,可以实现消息的重复消费的问题,但在某些场景下分组还不能满足我们的需求,比如,同时有多条同一个用户的数据,发送过来,我们需要根据用户统计,但是消息被分散到了不同的集群节点上了,这时我们就可以考虑消息分区了。  当生产者将消息数据发送给多个消费者实例时,保证同一消息数据始终是由同一个消费者实例接收和处理。Stream 消息分区创建项目 &a...

Spring cloud stream【消息分区】
文章 2021-12-03 来自:开发者社区

Spring cloud stream【消息分组】

上篇文章我们简单的介绍了stream的使用,发现使用还是蛮方便的,但是在上个案例中,如果有多个消息接收者,那么消息生产者发送的消息会被多个消费者都接收到,这种情况在某些实际场景下是有很大问题的,比如在如下场景中,订单系统我们做集群部署,都会从RabbitMQ中获取订单信息,那如果一个订单同时被两个服务获取到,那么就会造成数据错误,我们得避免这种情况。这时我们就可以使用Stream中的消息分组来解....

Spring cloud stream【消息分组】
文章 2021-12-03 来自:开发者社区

Spring cloud stream【入门介绍】

案例代码:https://github.com/q279583842q/springcloud-e-book  在实际开发过程中,服务与服务之间通信经常会使用到消息中间件,而以往使用了哪个中间件比如RabbitMQ,那么该中间件和系统的耦合性就会非常高,如果我们要替换为Kafka那么变动会比较大,这时我们可以使用SpringCloudStream来整合我们的消息中间件,来降低系统和中间....

Spring cloud stream【入门介绍】
问答 2021-11-11 来自:开发者社区

在 Spring 生态中玩转 RocketMQ中如何理解Spring Cloud Stream?

在 Spring 生态中玩转 RocketMQ中如何理解Spring Cloud Stream?

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

微服务

构建可靠、高效、易扩展的技术基石

+关注