本文将介绍RabbitMQ的binder提供的重试功能:重新入队 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 准备一个会消费失败的例子,可以直接沿用前文的工程,也可以新建一个,然后创建如下代码的逻辑:

@EnableBinding(TestApplication.TestTopic.class)
@SpringBootApplication
public class TestApplication {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}@RestControllerstatic class TestController {@Autowiredprivate TestTopic testTopic;/*** 消息生产接口** @param message* @return*/@GetMapping("/sendMessage")public String messageWithMQ(@RequestParam String message) {testTopic.output().send(MessageBuilder.withPayload(message).build());return "ok";}}/*** 消息消费逻辑*/@Slf4j@Componentstatic class TestListener {private int count = 1;@StreamListener(TestTopic.INPUT)public void receive(String payload) {log.info("Received payload : " + payload + ", " + count);throw new RuntimeException("Message consumer failed!");}}interface TestTopic {String OUTPUT = "example-topic-output";String INPUT = "example-topic-input";@Output(OUTPUT)MessageChannel output();@Input(INPUT)SubscribableChannel input();}}
复制代码

内容很简单,既包含了消息的生产,也包含了消息消费。消息消费的时候主动抛出了一个异常来模拟消息的消费失败。

在启动应用之前,还要记得配置一下输入输出通道对应的物理目标(exchange或topic名)、并设置一下分组,比如:

spring.cloud.stream.bindings.example-topic-input.destination=test-topic
spring.cloud.stream.bindings.example-topic-input.group=stream-exception-handler
spring.cloud.stream.bindings.example-topic-input.consumer.max-attempts=1
spring.cloud.stream.rabbit.bindings.example-topic-input.consumer.requeue-rejected=true
spring.cloud.stream.bindings.example-topic-output.destination=test-topic
复制代码

完成了上面配置之后,启动应用并访问localhost:8080/sendMessage?message=hello接口来发送一个消息到MQ中了,此时可以看到程序不断的抛出了消息消费异常。这是由于这里我们多加了一个配置:spring.cloud.stream.rabbit.bindings.example-topic-input.consumer.requeue-rejected=true。在该配置作用之下,消息消费失败之后,并不会将该消息抛弃,而是将消息重新放入队列,所以消息的消费逻辑会被重复执行,直到这条消息消费成功为止。 springboot微服务多用户商城系统java_代码开源_B2B电商系统_B2C电商系统

转载于:https://juejin.im/post/5c33fe226fb9a049d23638b9

java B2B2C 源码 Springcloud多租户电子商城系统- Stream重新入队(RabbitMQ)相关推荐

  1. java B2B2C Springcloud多租户电子商城系统-消息驱动的微服务(消费分区)

    通过之前的学习,我们已经能够在多实例环境下,保证同一消息只被一个消费者实例进行接收和处理.但是,对于一些特殊场景,除了要保证单一实例消费之外,还希望那些具备相同特征的消息都能够被同一个实例进行消费.这 ...

  2. java B2B2C Springcloud多租户电子商城系统-spring-cloud-eureka

    介绍 spring-cloud-eureka,被动式的服务发现,统一监控和管理你的服务列表.电子商务平台源码请加企鹅求求:一零三八七七四六二六. 什么是服务发现? 服务发现就像聊天室一个,每个用户来的 ...

  3. java B2B2C Springcloud多租户电子商城系统- Gateway 之Predict篇...

    predicate简介 Predicate来自于java8的接口.Predicate 接受一个输入参数,返回一个布尔值结果.该接口包含多种默认方法来将Predicate组合成其他复杂的逻辑(比如:与, ...

  4. java B2B2C Springcloud多租户电子商城系统-集成项目简介

    Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,希望可以帮助到大家. Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服 ...

  5. java B2B2C Springcloud多租户电子商城系统-spring-cloud-eureka...

    介绍 spring-cloud-eureka,被动式的服务发现,统一监控和管理你的服务列表. 什么是服务发现? 服务发现就像聊天室一个,每个用户来的时候去服务器上注册,这样他的好友们就能看到你,你同时 ...

  6. java B2B2C 多级分销多租户电子商城系统-消息队列之 RabbitMQ

    什么叫消息队列 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象.需要了解电子商务平台源码可加企鹅邱邱 一零三八七七四六二六 消息队 ...

  7. java B2B2C 源码 多级分销Springcloud多租户电子商城系统-hystrix的工作原理

    Hystrix是Netflix开源的一个限流熔断的项目.主要有以下功能: 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 隔离(线程 ...

  8. java B2B2C 源码 多级分销Springcloud多租户电子商城系统- 整合企业架构的技术点(二)...

    spring cloud本身提供的组件就很多,但我们需要按照企业的业务模式来定制企业所需要的通用架构,那我们现在需要考虑使用哪些技术呢? 下面我针对于spring cloud微服务分布式云架构做了以下 ...

  9. java B2B2C 源码 多级分销Springcloud多租户电子商城系统(十)用spring Restdocs创建API文档...

    这篇文章将带你了解如何用spring官方推荐的restdoc去生成api文档.本文创建一个简单的springboot工程,将http接口通过Api文档暴露出来.只需要通过 JUnit单元测试和Spri ...

最新文章

  1. 利刃 MVVMLight 8:DispatchHelper在多线程和调度中的使用
  2. C#设计模式(3)——工厂方法模式
  3. 扩展Snackbar 使其支持居中显示
  4. linux加密框架 crypto 算法管理 - 算法查找接口
  5. DNN(DotNetNuke)注册用户终于突破10万人了,其3.0也终于跳票了...
  6. Markdown完整语法说明
  7. (36)FPGA面试题D触发器实现4进制计数器
  8. 全国计算机二级c语言和江苏教材一样吗,计算机二级省级和全国计算机二级考试内容一样吗...
  9. 【QT学习之路】Charts的简单使用
  10. shiro框架如何保持登录状态
  11. 2022最新java坦克大战+免费源码+坦克大战图片
  12. JavaScript基础知识总结(6张思维导图)
  13. 使用STM32CubeMX和SW4STM32在Nucleo-F401RE开发板轻松实现Blinky闪烁 [
  14. Mongodb数据丢失解决办法
  15. docker部署rabbitmq出错touch: cannot touch ‘/etc/rabbitmq/rabbitmq.conf‘: Permission denied
  16. JavaScript 堆内存溢出
  17. 过程计算机系统 pcs,过程控制系统(PCS)
  18. java计算机毕业设计翔隆生鲜超市进货管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  19. 【Altium Designer学习】:排针类元件模型的创建以及阵列式粘贴方法
  20. JAVA命名规范(数据库 and 后端)

热门文章

  1. 20160531-20160607springmvc入门
  2. Linux下安装PCRE
  3. POJ 2718 Smallest Difference 贪心构造
  4. 面经 cisco 2
  5. 上海浦发银行总行信息科技部大数据专家陈春宝:大数据与机器学习重塑零售银行业务...
  6. golang import后带“_”下划线的意义
  7. python学习笔记 --- print (输出到文件 file)
  8. 重要通知 | WanaCrypt0r 2.0及Onion等勒索软件安全建议
  9. SpriteBuilder实际操作中如何确定合适Breaking force的值
  10. 《你的灯亮着吗》读书笔记3