当前位置: 首页 > news >正文

rocketmq普通消息-消息类型

引用普通消息发送 | RocketMQ

异步调用的经典业务场景_使用异步的业务场景-CSDN博客

同步消息类型

Send消息发送方发出一条消息后,会在收到服务端同步响应之后才发下一条消息的通讯方式,可靠的同步传输被广泛应用于各种场景,如重要的通知消息、短消息通知等。

用途

1. 重要通知和报警

• 适用于需要确保消息可靠到达的场景,如系统报警、重要通知、事件提醒等。同步发送确保消息发送成功后,系统能得到立即确认,保证消息不会丢失。

2. 订单系统

• 订单系统中的订单创建、订单支付等关键操作需要确保数据一致性和可靠性。通过同步发送,系统可以在发送消息后立即确认消息已成功写入消息队列,从而保证订单数据的一致性和完整性。

3. 交易系统

• 在金融交易、证券交易等高可靠性要求的系统中,消息的可靠传输至关重要。同步发送可以确保每一笔交易的消息都成功到达服务器,避免因消息丢失导致的交易失败或数据不一致。

4. 库存管理系统

• 在库存管理系统中,库存变动消息需要可靠传输,以确保库存数据的准确性和一致性。通过同步发送,系统可以在消息发送后立即确认消息已成功写入消息队列,从而避免库存数据不一致的问题。

异步发送

SendSync消息发送方在发送了一条消息后,不需要等待服务端响应即可发送第二条消息,发送方通过回调接口接收服务端响应,并处理响应结果。异步发送一般用于链路耗时较长,对响应时间较为敏感的业务场景。例如,视频上传后通知启动转码服务,转码完成后通知推送转码结果等。

  1. 不同场景(用户注册,用户购买产品等)下的短信验证码发送,可以使用异步方式发送: 一方面是因为客户这个时效性要求没有那样高,另一方面在特定时间范围内用户没有收到验证码,用户可以点击再次发送验证码。

  2. 购买成功或者抽奖成功后短信或者邮件通知,可以通过异步的方式进行。 因为涉及用户的利益,要谨慎对待。一方面一定要把数据先存到数据库或者日志里面(注意信息安全^-^,别存敏感明文信息或者加密存储),然后再放入到异步队列中执行。

    另一个方面,要考虑到应用服务意外停止时,没有发送成功数据的补偿机制。 这种情况不常见,并且为了减少耦合和当前异步程序的复杂度。我们使用单独的服务上部署异步任务补偿程序,来扫描未完成的任务,并且进行重放(一定要注意严谨性)。

  3. 优惠券和卡券的发放,跟购买成功或抽奖成功的方式类似。\u000b可以在当前活动高峰后延时发放,并且使用异步的方式进行。

  4. 微信红包,因为需要跟微信进行交互,并且微信会通知客户红包的情况,可以使用异步的方式进行。 当涉及资金或者礼品时,一定要谨慎对待设计,并且需要有方便进行异步任务停止和启动的功能。

  5. 微信消息通知,因为跟微信进行交互,成功后微信进行通知,可以使用异步。 这个跟短信验证码类似。

  6. 订单流程处理,可以使用异步,因为涉及到后续步骤可以使用简单工作流来完成。有几个开源的框架可以参考。

  7. 数据同步或者异步任务补偿,因为是延时处理,可以使用异步进行处理。在使用时,可以配合定时任务,比如cron4j来周期性的进行补偿。适合后面总-分-总的任务处理模式。

单向模式发送

SendOneWay 发送方只负责发送消息,不等待服务端返回响应且没有回调函数触发,即只发送请求不等待应答。此方式发送消息的过程耗时非常短,一般在微秒级别。

单向模式发送适用场景

1. 日志收集

• 日志收集系统需要快速、批量地发送大量日志消息到日志服务器。由于日志的发送频率高且不需要每条日志都确认接收状态,单向模式发送是非常合适的选择。

2. 监控数据

• 在监控系统中,实时采集的数据可以通过单向模式发送到监控服务器。监控数据通常是大量且频繁的,而丢失部分数据通常不会对系统产生重大影响,因此适合使用单向模式。

3. 简单通知

• 对于简单的通知消息,例如系统心跳、状态更新等,不需要确认消息是否到达,只需要发送即可。这种情况下,单向模式可以降低发送消息的开销。

4. 批量数据传输

• 批量数据传输如批量更新、同步等,不需要每一条消息都进行确认,只需要保证大部分消息成功传输即可。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • idea中maven无法下载内网自建的Nexus私服中的依赖
  • 优化冗余代码:提升前端项目开发效率的实用方法
  • 搭建 STM32 网关服务器的全流程:集成嵌入式 C++、TCP/IP 通信、Flash 存储及 JWT 认证(含代码示例)
  • 了解郑州自闭症寄宿学校:提供专业康复服务与关怀
  • 《昇思25天学习打卡营第24天》
  • Springboot 开发之 RestTemplate 简介
  • 微信小程序-获取手机号:HttpClientErrorException: 412 Precondition Failed: [no body]
  • 人工智能与机器学习原理精解【11】
  • 【Git】git stash
  • 解决 Git 访问 GitHub 时的 SSL 错误
  • 等保测评与《网络安全法》的深度融合
  • 视频主题Qinmei 3.0视频站源码_WordPress影视视频主题/附详细安装教程
  • springboot电动自行车租赁系统-计算机毕业设计源码64081
  • SpringBoot的基础配置
  • leetcode-207. 课程表
  • 【RocksDB】TransactionDB源码分析
  • classpath对获取配置文件的影响
  • conda常用的命令
  • CSS实用技巧干货
  • emacs初体验
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java知识点总结(JavaIO-打印流)
  • jdbc就是这么简单
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS+CSS实现数字滚动
  • 编写高质量JavaScript代码之并发
  • 聊聊directory traversal attack
  • 免费小说阅读小程序
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 设计模式(12)迭代器模式(讲解+应用)
  • 什么软件可以剪辑音乐?
  • 温故知新之javascript面向对象
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 主流的CSS水平和垂直居中技术大全
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​zookeeper集群配置与启动
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #565. 查找之大编号
  • (备份) esp32 GPIO
  • (翻译)terry crowley: 写给程序员
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (一)SvelteKit教程:hello world
  • (一)为什么要选择C++
  • (转)IOS中获取各种文件的目录路径的方法
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .Net 执行Linux下多行shell命令方法
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法