RabbitMQ的应用总结

未连接互联网的银河麒麟v10安装g++,各种报错,如何处理? 🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。 阅读详情

RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在 2006 年的 6 月,Cisco 、Redhat、iMatix 等联合制定了 AMQP 的公开标准。
RabbitMQ是由RabbitMQ Technologies Ltd开发并且提供商业支持的。该公司在2010年4月被SpringSource(VMWare的一个部门)收购。在2013年5月被并入Pivotal。其实VMWare,Pivotal和EMC本质上是一家的。不同的是VMWare是独立上市子公司,而Pivotal是整合了EMC的某些资源,现在并没有上市。
RabbitMQ的官网是http://www.rabbitmq.com
百度百科amqp协议介绍https://baike.baidu.com/item/AMQP/8354716?fr=aladdin
注意:RabbitMQ是采用erlang语言开发的,所以必须有Erlang环境才可以运行

Erlang  (高并发应用) 

Erlang编程语言最初目的是进行大型电信交换设备的软件开发,是一种适用于大规模并行处理环境的高可靠性编程语言。随着多核处理器技术的日渐普及,以及互联网、云计算等技术的发展,该语言的应用范围也有逐渐扩大之势。

百度百科介绍:https://baike.baidu.com/item/Erlang%E8%AF%AD%E8%A8%80/20864044?fr=aladdin

 

比较图示:  初衷理念实现抗高并发语言

 

 

 

不同的项目 不同的 路径,独立的virtualhost,相互进行隔离:  客户端连接时候需要指定virtual host地址 。

更加解耦 相互进行隔离  类似于每个项目都有不同的数据库一样。

 

 

 

添加virtual host

指定某个用户的 Virtual Host

 

 

AMQP(高级消息队列协议)是一个异步消息传递所使用应用层协议规范,为面向消息中间件设计,基于此协议的客户端与消息中间件可以无视消息来源传递消息,不受客户端、消息中间件、不同的开发语言环境等条件的限制;

涉及概念解释: 
Server(Broker):接收客户端连接,实现AMQP协议的消息队列和路由功能的进程;
Virtual Host:虚拟主机的概念,类似权限控制组,一个Virtual Host里可以有多个Exchange和Queue。   
Exchange:交换机,接收生产者发送的消息,并根据Routing Key将消息路由到服务器中的队列Queue。
ExchangeType:交换机类型决定了路由消息行为,RabbitMQ中有三种类型Exchange,分别是fanout、direct、topic;
Message Queue:消息队列,用于存储还未被消费者消费的消息;
Message:由Header和body组成,Header是由生产者添加的各种属性的集合,包括Message是否被持久化、优先级是多少、由哪个Message Queue接收等;body是真正需要发送的数据内容;
BindingKey:绑定关键字,将一个特定的Exchange和一个特定的Queue绑定起来。

 

RabbitMQ几种工作模式:

  RabbitMQ点对点模式:

1、点对点模式  一对一模式。  一个生产者投递消息给队列 只能允许有一个消费者进行消费    如果集群的话 会进行均摊消费   服务器配置不一样 均摊就不优了 

     

长连接 不用三次握手之类的 提高传输效率     但是长连接占服务器带宽

推:  消费者已经启动了,建立长连接,一旦生产者向队列投递消息会立马推送给消费者

取: 生产者先投递消息队列进行缓存,这时候消费者再次启动时候 ,就会向队列获取消息。

点对点模式代码: RabbitMQ整合Spring Booot点对点模式

 

RabbitMQ手动模式和自动应答模式

   1.了确保消息不会丢失,RabbitMQ支持消息应答。消费者发送一个消息应答,告诉RabbitMQ这个消息已经接收并且处理完毕了。RabbitMQ就可以删除它了。
   2. 如果一个消费者挂掉却没有发送应答,RabbitMQ会理解为这个消息没有处理完全,然后交给另一个消费者去重新处理。这样,你就可以确认即使消费者偶尔挂掉也不会丢失任何消息了。
   3. 没有任何消息超时限制;只有当消费者挂掉时,RabbitMQ才会重新投递。即使处理一条消息会花费很长的时间。
   4. 消息应答是默认打开的。我们通过显示的设置autoAsk=true关闭这种机制。现即自动应答开,一旦我们完成任务,消费者会自动发送应答。通知RabbitMQ消息已被处理,可以从内存删除。如果消费者因宕机或链接失败等原因没有发送ACK(不同于ActiveMQ,在RabbitMQ里,消息没有过期的概 念),则RabbitMQ会将消息重新发送给其他监听在队列的下一个消费者。

 

应答模式:

自动应答: 不在乎消费者对消息处理是否成功,都会告诉队列删除消息。如果处理消息失败,实现自动补偿(队列投递过去 重新处理)。

手动应答: 消费者处理完业务逻辑,手动返回ack(通知)告诉队列处理完了,队列进而删除消息。

 

实现思路:

  • 生产者端代码不变,消费者端代码这部分就是用于开启手动应答模式的。

               channel.basicConsume(QUEUE_NAME, false, defaultConsumer);
         注:第二个参数值为false代表关闭RabbitMQ的自动应答机制,改为手动应答。

  • 在处理完消息时,返回应答状态,true表示为自动应答模式。

              channel.basicAck(envelope.getDeliveryTag(), false);

 

自动应答: 不在乎消费者对消息处理是否成功,都会告诉队列删除消息。如果处理消息失败,实现自动补偿(队列投递过去 重新处理)。

手动应答: 消费者处理完业务逻辑,手动返回ack(通知)告诉队列处理完了,队列进而删除消息。

RabbitMQ整合Spring Booot【消费者应答模式】

 

RabbitMQ队列形式

  公平队列

  •      目前消息转发机制是平均分配,这样就会出现俩个消费者,奇数的任务很耗时,偶数的任何工作量很小,造成的原因就是近当消息到达队列进行转发消息。并不在乎有多少任务消费者并未传递一个应答给RabbitMQ。仅仅盲目转发所有的奇数给一个消费者,偶数给另一个消费者。
  •      为了解决这样的问题,我们可以使用basicQos方法,传递参数为prefetchCount= 1。这样告诉RabbitMQ不要在同一时间给一个消费者超过一条消息。

 总结:

      只有在 消费者空闲的时候会发送下一条信息。调度分发消息的方式,也就是告诉RabbitMQ每次只给消费者处理一条消息,也就是等待消费者处理完毕并自己对刚刚处理的消息进行确认之后,才发送下一条消息,防止消费者太过于忙碌,也防止它太过去清闲。

 

 公平队列原理:队列服务器向消费者发送消息的时候,消费者采用手动应答模式,队列服务器必须要收到消费者发送ack结果通知,才会发送下一个消息。(快的处理的多,消费的多)

 

使用背景:

  • 服务器能力不同,能者多劳。 均摊模式的话,都处理相同数量的
  •  消息队列 发出去的消息被消费完了 然后收到 ack包 才可以继续发给他

 

通过 设置channel.basicQos(1); 开发:   RabbitMQ整合Spring Booot【公平队列】

 

RabbitMQ死信队列

关于RabbitMQ死信队列

  • 死信队列 听上去像 消息“死”了  。其实也有点这个意思,死信队列 是当消息在一个队列,因为下列原因: 
  1. 消息被拒绝(basic.reject/ basic.nack)并且不再重新投递 requeue=false
  2. 消息超期 (rabbitmq  Time-To-Live -> messageProperties.setExpiration()),消息TTL过期。
  3. 队列超载,队列达到最大长度(队列满了,无法再添加数据到mq中)

 变成了 “死信” 后 ,被重新投递(publish)到另一个Exchange ,该Exchange 就是DLX 。

 然后该Exchange 根据绑定规则,转发到对应的 队列上, 监听该队列 ,就可以重新消费。

 说白了 就是 没有被消费的消息 ,换个地方重新被消费

 

生产者   -->  消息 --> 交换机  --> 队列  --> 变成死信  --> DLX交换机 -->队列 --> 消费者

 

应用场景分析:

在定义业务队列的时候,可以考虑指定一个死信交换机,并绑定一个死信队列,当消息变成死信时,该消息就会被发送到该死信队列上,这样就方便我们查看消息失败的原因了

死信队列 听上去像 消息“死”了 ,其实也有点这个意思,
死信队列 是 当消息在一个队列 因为下列原因:
1.消息被拒绝(basic.reject或basic.nack)并且requeue=false.
2.消息TTL过期
3.队列达到最大长度(队列满了,无法再添加数据到mq中)

应用场景分析:

 

  •  在定义业务队列的时候,可以考虑指定一个死信交换机,并绑定一个死信队列,当消息变成死信时,该消息就会被发送到该死信队列上,这样就方便我们查看消息失败的原因了

                   channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, false); 丢弃消息

  • 如果高并发情况到来  某一个队列比如邮件队列满了 或者异常  或者消息过期 或者消费者拒绝消息

如何使用死信交换机呢?

定义业务(普通)队列的时候指定参数

  1. x-dead-letter-exchange: 用来设置死信后发送的交换机
  2. x-dead-letter-routing-key:用来设置死信的routingKey

 

  1.  邮件队列 绑定一个死信交换机 ,一旦邮件队列满了的情况下 ,为了防止数据丢失情况  ,消息不再邮件队列存放了,放到死信交换机。
  2. 然后交给私信邮件队列。
  3. 最终交给死信消费者。

 

 步骤:

  1.   创建死信交换机 、死信队列、 并且绑定
  2.   之前的队列没有绑定死信队列和死信交换机 不能做更改绑定死信交互机
  3.   之前创建好的邮件队列 删除掉  已经创建好的队列不能做更改  交换机也清理掉

RabbitMQ整合Spring Booot【死信队列】

 

Exchange

 这个可能是消息队列中最重要的队列了,其他的都是在它的基础上进行了扩展。

 

 关于交换机:

  1. 生产者发送消息不会向传统方式直接将消息投递到队列中,而是先将消息投递到交换机中,在由交换机转发到具体的队列,队列在将消息以推送或者拉取方式给消费者进行消费,这和我们之前学习Nginx有点类似。交换机的作用根据具体的路由策略分发到不同的队列中。

 

交换机有四种类型:

  1.  Direct exchange(直连交换机):是根据消息携带的路由键(routing key)将消息投递给对应队列的。
  2.  Fanout exchange(扇型交换机):将消息路由给绑定到它身上的所有队列。
  3.  Topic exchange(主题交换机):队列通过路由键绑定到交换机上,然后,交换机根据消息里的路由值,将消息路由给一个或多个绑定队列。
  4.  Headers exchange(头交换机):类似主题交换机,但是头交换机使用多个消息属性来代替路由键建立路由规则。通过判断消息头的值能否与指定的绑定相匹配来确立路由规则。 

 

过程:

一个生产者发送消息  ----> 到交换机  ---->  到队列(每个队列绑定到交换机上)  ----> 到消费者(每个消费者有自己的队列)

 

功能实现:一个生产者发送消息,多个消费者获取消息(同样的消息), 包括:

  •    一个生产者
  •   一个交换机
  •   多个队列
  •   多个消费者

   

1. DirectExchange :

   (1) 路由key模式:

场景:

  • 生产者发送消息到交换机并指定一个路由key,
  • 消费者队列绑定到交换机时要指定路由key(key匹配就能接受消息,key不匹配就不能接受消息)

例如:

     我们可以把路由key设置为insert ,那么消费者队列key指定包含insert才可以接收消息,消费者队列key定义为update或者delete就不能接收消息。很好的控制了更新,插入和删除的操作。

注: 

    前面做的demo中RoutingKey设置的空。

 


代码实现:

RoutingKey有值的时候,那么 经过消息队列之后,需要在经过RoutingKey进行判断决定消费者。 

RabbitMQ整合Spring Booot【Exchange-路由key模式】

(1) Topics模式:

  •    此模式实在路由key模式的基础上,使用了通配符来管理消费者接收消息。
  •    生产者P发送消息到交换X,type=topic。交换机根据绑定队列的routing key的值进行通配符匹配。

                      -    符号#:匹配一个或者多个词lazy.# 可以匹配lazy.irs或者lazy.irs.cor。

                      -    符号*:只能匹配一个词lazy.* 可以匹配lazy.irs或者lazy.cor。

 

 关于 通配符 “,” 和 “#” 的使用: RabbitMQ整合Spring Booot【Exchange-Topics模式】

 

 

 (3)Fanout Exchange:

RabbitMQ发布与订阅原理 Exchange Fanout模式:

案例: 用户注册 ---> 发送邮件 --->发送短信

 

 

RabbitMQ整合Spring Booot【Exchange-Fanout模式】

 

RabbitMQ生产者事务确认机制 

  背景:

       生产者发送消息出去之后,不知道到底有没有发送到RabbitMQ服务器, 默认是不知道的。而且有的时候我们在发送消息之后,后面的逻辑出问题了,我们不想要发送之前的消息了,需要撤回该怎么做?

解决方案:

  AMQP 事务机制

  事务模式:

  •  txSelect 将当前channel设置为transaction模式 (开启事务)
  •  txCommit 提交当前事务   (提交事务)
  • txRollback 事务回滚   (回滚事务)

注: RabbitMQ支持消息持久化机制,把消息持久化到硬盘上。如果RabbitMQ服务器宕机了,消息不会丢失。

RabbitMQ整合Spring Booot【生产者事务确认机制】

 

 方案二:Confirm 模式

  队列和消费者建立长连接,推送或者拉取形式。

  消费者通过自动应答或者手动应答,队列服务器等待应答结果,如果没有应答结果那么保留给下一个消费者。 

 

RabbitMQ消费者重试机制 

  消费者运行报错时候,会进行重试。

RabbitMQ整合Spring Booot【消费者补偿幂等问题】

 

RabbitMQ解决分布式事务问题:

RabbitMQ解决分布式事务

 

小结:

1.点对点(简单)的队列
2.工作(公平性)队列模式
3.发布订阅模式
4.路由模式Routing(Direct)
5.通配符模式Topics

 

 

【TIDB】TiDB认证考试PTCA 练习题 题库 TiDB认证考试PTCA 练习题 题库 阅读详情

相关推荐

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

前端_http协议_html语言head&body基本介绍和用法

0 软件开发流程 web开发流程图解 0.5、前端-介绍 概念(广泛):任何与用户直接打交道的操作界面称之为前端 后端:不直接与用户打交道,给幕后操作者用(一堆代码) 学习要求:看得懂基本前端代码,能搭建简单页面 # 前端基础 HTML\CSS\JavaScript HTML——内容:网页的骨架,没有任何样式 CSS——外观:给骨架添加各种样式,变好看 JavaScript——动作:控制网页动态效果 # 前端框架:基于现成的页面样式进行修改 bootstrap\JQuery\Vue 提前封装好了

weixin_45591980的博客 3073

手把手教你用SNAP做全极化SAR图像分类

引言 最近在研究极化SAR图像分类方面的内容,发现用SNAP软件可以很方便的实现图像的分类。因为在入门过程中踩了很多坑,浪费了一些时间,为了不让大家踩坑,所以决定写下这篇教程。 前期准备 软件下载 SNAP是欧空局旗下的一个SAR图像处理软件,可以点击下载地址进行下载。 数据下载 数据下载地址:https://mdacorporation.com/sample_data/RS2_OK76385_...

zz651044657的博客 1万+

RabbitMq应用

rabbit 的模式与高可用

weixin_59868842的博客 659

C#实战:如何用Bartender 10.1实现动态打印与批量打印(附完整源码)

本文深入探讨了如何在C#项目中高效集成Bartender 10.1,实现企业级的动态打印与批量打印功能。文章提供了从环境配置、COM接口精讲、高可用打印服务类封装,到批量打印性能优化及生产环境部署的全套实战方案与源码,帮助开发者构建健壮、可维护的打印解决方案。

weixin_29290963的博客 436

杰理芯片外挂Flash音乐播放功能避坑指南(附FAT文件系统配置)

本文详细解析了杰理芯片外挂Flash实现音乐播放功能的技术要点与常见问题,包括硬件连接、SPI驱动配置、FAT文件系统烧录及音乐播放集成等关键环节。特别针对Flash选型、FAT文件系统配置等易错点提供实用解决方案,帮助开发者高效完成嵌入式音频系统开发。

yhn45678901的博客 834

RabbitMQ的详解和使用

一、AMQP协议 1、AMQP协议介绍 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有RabbitMQ等。 2、功能范围 存储转发(多个消息发送者,单个消息接收者) 分布式事务(多个消息发送者,多个消息接收者) 发布订阅(多个消息发送者,多个消息

创作不易,请多支持,将为本站提供更多「有价值的文章」。 1万+

新版股票配资系统源码/股票分析系统技术方案

新版股票配资系统;全套源码支持新股申购功能,包含C#+MySQL开发的后台系统及Spring框架,采用C/S架构。注意:本源码仅限技术学习、功能测试及模拟交易使用,严禁用于非法用途,违者责任自负。

q318136906的博客 1647

RabbitMQ实战应用场景(服务解耦)

通过消息队列实现不同服务间的解耦,提高系统的可拓展性和可维护性。在实战案例中难免会遇到服务间耦合度过高的问题。流程图:举个常见的例子,在分布式电商项目中,我们通过(搜索引擎)来实现搜索功能并且查询出的数据是在中查询出来的,而在后台中我们修改商品信息或者新增商品信息,在ElasticSearch中商品信息并不会得到同步修改,也就是说修改商品之后会导致后台和前台的数据不一致,此时如果不用RabbitMQ。

m0_73414953的博客 985

达梦数据库导入报错:[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告dimp V8,本地编码:PG_GBK, 导入文件编码:PG_UTF8

达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告。4.无视警告,输入y,回车。

十三月的博客 1万+

【人工智能】Open WebUI 安装指南 ( 基于Docker下载和使用Open WebUI 、通过本地运行项目源码进行搭建Open WebUI)

Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容的 API。社区:https://openwebui.com/

奶爸的编程之路,也就一周冷个三天 2万+

RabbitMQ —— 理解及应用场景

RabbitMQ —— 理解及应用场景

小蜜蜂vs码农 3915

从 SAP GUI 到 API 自动化,为什么 SAP 团队必须把 API 拉到路线图中央

摘要: SAP项目正从传统手工操作转向API驱动,以应对业务敏捷性需求。API不仅是技术接口,更是核心业务能力的标准化封装,助力自动化、低代码、AI集成和系统升级。通过SAP Business Accelerator Hub等工具,企业可复用标准API替代定制开发,减少技术债。API还赋能自动化平台、实时集成和AI Agent执行,确保安全治理与审计追踪。未来,API将成为企业系统与AI交互的核心桥梁,缺乏API将迫使业务依赖脆弱的UI自动化方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 302

RabbitMQ应用

涉及rabbitmq-communication与springboot-rabbitmq代码

qq_74812898的博客 1868

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【RabbitMQ】应用

七种工作模式以及springboot整合

bit me的博客 1742

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

RabbitMq原理及应用

一、简介 MQ(Message Queue),即消息队列,是一种实现应用级别之间的通信手段。不同应用之间可以通过读写消息,以消息为媒介传递应用数据,不需要应用之间建立强连接。此方式与远程调用(RPC)是应用通信的常见方式。在这个调用过程中,消息发送者定义为生产者,消息接收者为消费者。 RabbitMq是使用Erlang语言开发的基于AMQP协议实现,面向消息、队列、路由的开源消息中间件。在一些企业级应用中对数据一致性、稳定性和可靠性以及吞吐量、性能要求比较高的场景应用比较广泛。 RabbitMq使用链

weixin_42070918的博客 3226

RabbitMQ在Java中应用

RabbitMQ 简介定义: RabbitMQ 是一个开源的消息代理和队列服务器,用于在分布式系统中存储和转发消息。特点: 高可靠性、高可用性、易扩展、支持多种协议(如 AMQP、MQTT、STOMP 等)。

2401_89104997的博客 1965

RabbitMQ应用场景与实例

Publisher:是Message的生产者,Publisher这个Clients产生了一些Message。 Consumer:Message的消费者,Publisher产生的Message,最终要到达Consumer这个Clients,进行消费。 Exchange: 指定消息按什么规则,路由到哪个Queue,Message消息先要到达Exchange,在Server中承担着从Produce接...

JinXYan的博客 5946

RabbitMQ - RabbitMQ简介,应用

消息(Message)是指在应用间传送的数据。消息队列(Message Queue,简称MQ)是一种应用程序对应用程序的通信方法。因为是队列,所以遵循FIFO 先进先出的原则,它是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务消息队列主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。为何使用MQ?1、流量削峰:解决高并发问题如秒杀活动,可能会在短时间内产生大量请求

MinggeQingchun的博客 432

rabbitmq项目应用分析

rabbitmq介绍 MQ全称Message Queue,即消息队列,RabbitMQ是由relang语言开发,基于AMQP(Advanced Message Queuing Protocol 一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计),它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用的非常广泛。 JMS是什么 JMS是ja...

weixin_45381461的博客 403

RabbitMQ原理及应用

一、RabbitMQ基本原理 1. MQ与RabbitMQ MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列中的消息。 RabbitMQ是MQ产品的典型代表,是一款由ERLANG语言开发的基于AMQP协议可复用的企业消息系统。业务上,可以实现服务提...

Jake Weng 509

【RabbitMQ】基于Spring Boot + RabbitMQ 完成应用通信

用户下单成功之后,通知物流系统,进行发货(只涉及到应用通信,不做具体功能实现)通常情况下,订单系统和物流系统是不同团队来开发的,是两个独立的应用 - 为了方便演示,就把两个项目创建到一个文件夹下

Yeeear的博客 2919

RabbitMQ高级应用

生成订单后30分钟未支付自动取消、生成订单10秒后给用户发短信、订单完成后一直不评价48小时后自动为5星好评等业务场景都会用到延时任务。与定时任务不同的是延时任务它是对当前任务的延时不能明确具体为哪天的哪个具体的时间来执行,也没有明确的什么执行周期,延时任务一般就是单个任务并不是批处理。

qq_35623417的博客 1538

Rabbitmq的应用场景

虽然并行已经提高的处理时间,但是,前面说过,邮件和短信对我正常的使用网站没有任何影响,客户端没有必要等着其发送完成才显示注册成功,应该是写入数据库后就返回. 消息队列: 引入消息队列后,把发送邮件,短信不是必须的业务逻辑异步处理。​​并行方式​​:将注册信息写入数据库后,发送邮件的同时,发送短信,以上三个任务完成后,返回给客户端,并行的方式能提高处理的时间。​​订单系统​​:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。2.秒杀业务根据消息队列中的请求信息,再做后续处理.

weixin_46879188的博客 1758

【架构系列】RabbitMQ应用场景及在实际项目中如何搭建可靠的RabbitMQ架构体系

本文将深入探讨RabbitMQ的应用场景以及如何在实际项目中构建可靠的RabbitMQ架构体系。

c18213590220的博客 5161

RabbitMq加websocket应用

1定义websocket var websocket = null;//当前服务:端口号80 var websocketUrl86=utils.websocketUrl86; // //判断当前浏览器是否支持WebSocket // if ('WebSocket' in window) { // $.ajax({ // url: "/questionDisplayController/q

lang09的博客 751

【RabbitMQ】Spring Boot 结合 RabbitMQ 完成应用间的通信

Spring 框架与 RabbitMQ 的整合主要通过 Spring AMQP(Advanced Message Queuing Protocol)模块实现,提供了便捷的消息队列开发能力。@RabbitHandler 注解用于标记方法,这些方法会根据消息的类型来处理接收到的消息。当一个消息监听器容器接收到消息时,它会根据消息的类型选择合适的 @RabbitHandler 注解的方法来处理该消息。 

2302_79806056的博客 2154
上一篇: RabbitMQ整合Spring Booot【消费者应答模式】
下一篇: 秒杀系统设计总结
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值