草庐IT

一文带你认知定时消息发布RocketMQ

华为云开发者社区 2023-03-28 原文
摘要:DMS任意时间定时消息能力发布。

本文分享自华为云社区《一文带你认知定时消息发布RocketMQ》,作者: 华为云PaaS服务小智 。

DMS是华为云的分布式消息中间件服务。适用于解决分布式架构中的系统解耦、跨系统跨地域数据流通、分布式事务协调等难题,协助构建优雅的现代化应用架构,提供可兼容 Kafka/RabbitMQ/RocketMQ 开源系统的云服务。

DMS是一个低延迟、弹性高可靠、高吞吐、动态扩展、便捷多样的消息中间件服务。

近期,DMS服务正式上线任意时间定时消息特性,带来了灵活、精确、高性能的消息定时能力支持。

DMS rocketMQ定时消息功能流程图

为什么需要定时消息

随着互联网技术的蓬勃发展,各公司的业务场景变得越来越纷繁复杂。对于精确度、高并发、高可靠的要求也达到了一个前所未有的高度。

在这些复杂的业务场景中,定时调度场景,尽管有着十分庞大和迫切的需求,却缺乏一个“完美”的一站式解决方案。

对于定时消息需求稍低的企业会使用一些消息中间件“残血版”的开源来实现定时调度。有的企业对于定时消息的吞吐量和精确度有着非常高的要求,往往会在消息中间件的基础上自建 Serverless 定时消息中台。如:使用 Amazon SNS 服务实现的 Serverless 定时器

华为云 DMS 定时消息能力的优势

华为云 DMS 上线的定时消息能力在开源消息中间件和各大云厂商提供的定时能力中处于领先地位,能够提供毫秒级精确度、最大长达一年的定时消息能力。对于高度依赖定时消息中台的场景、华为云 DMS 定时消息能够支撑万级吞吐量。后续会上线 Serverless 能力,做到动态伸缩,同时满足低成本和高性能的诉求。

下面介绍一下华为云 DMS 定时消息的功能亮点:

  • 任意时间:能够支持 1 年内任意时间的定时消息。
  • 高精度:定时精度达到毫秒级(在无堆积情况下)。
  • 高性能:接近于普通消息的吞吐量。
  • 高可靠:不会丢失定时消息。
  • 支持取消:在定时消息未投递前支持取消。
  • 可观测性:可查询定时消息。

定时消息最佳实践

在用户发起订单的场景下,需要在一定时间(如 5 分钟)后自动关闭未支付的订单。我们需要一个定时机制按时触发订单关闭的逻辑。此时正式定时消息发挥作用的时刻:在下单时发送一条定时在 5 分钟后投递的定时消息,用它触发关闭订单的逻辑。如果用户支付了订单,可以将之前的定时消息取消。

此外,对于需要大量任务定时调度的场景,可以基于DMS定时消息能力构建一个定时调度中台。依靠DMS定时消息的高吞吐量,可以实现数十万任务并发调度。

除此之外,定时调度还能应用于更多其他场景,如定时提醒、等待重试、事件预订等等。

订单场景流程图

未来展望

华为云已经上线分布式消息服务 RocketMQ 版任意时间定时消息特性。点击使用

华为云 DMS 版本正在快速演进中,后续将引入 Serverless 架构,在高可靠高可用基础上消息服务基础上,提供动态扩缩容能力,从容应对流量洪峰,在流量低谷时缩容。按需计费,动态管理企业业务成本,达到降本增效的效果。

 

点击关注,第一时间了解华为云新鲜技术~

有关一文带你认知定时消息发布RocketMQ的更多相关文章

  1. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  2. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  3. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  4. ruby-on-rails - 如何在发布新的 Ruby 或 Rails 版本时收到通知? - 2

    有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:

  5. Ruby - 如何将消息长度表示为 2 个二进制字节 - 2

    我正在使用Ruby,我正在与一个网络端点通信,该端点在发送消息本身之前需要格式化“header”。header中的第一个字段必须是消息长度,它被定义为网络字节顺序中的2二进制字节消息长度。比如我的消息长度是1024。如何将1024表示为二进制双字节? 最佳答案 Ruby(以及Perl和Python等)中字节整理的标准工具是pack和unpack。ruby的packisinArray.您的长度应该是两个字节长,并且按网络字节顺序排列,这听起来像是n格式说明符的工作:n|Integer|16-bitunsigned,network(bi

  6. ruby-on-rails - 在 Flash 警报 Rails 3 中显示错误消息 - 2

    如果我在模型中设置验证消息validates:name,:presence=>{:message=>'Thenamecantbeblank.'}我如何让该消息显示在闪光警报中,这是我迄今为止尝试过的方法defcreate@message=Message.new(params[:message])if@message.valid?ContactMailer.send_mail(@message).deliverredirect_to(root_path,:notice=>"Thanksforyourmessage,Iwillbeintouchsoon")elseflash[:error]

  7. ruby-on-rails - 在 RSpec 中,如何以任意顺序期望具有不同参数的多条消息? - 2

    RSpec似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:allow(a).toreceive(:f)expect(a).toreceive(:f).with(2)a.f(1)a.f(2)a.f(3)我问的原因是a.f的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。 最佳答案 RSpecspy是测试这种情况的一种方式。要监视一个方法,用allowstub,除了方法名称之外没有任何约束,调用该方法,然后expect确切的方法调用。例如:allow(a).toreceive(:f)a.f(2)a.f(1)

  8. ruby-on-rails - 闪存消息存储在哪里? - 2

    我以为它们存储在cookie中-但不,检查cookie没有任何结果。session也不存储它们。那么,我在哪里可以找到它们?我需要这个来直接设置它们(而不是通过flashhash)。 最佳答案 它们存储在inyoursessionstore.自rails2.0以来的默认设置是cookie存储,但请检查config/initializers/session_store.rb以检查您是否使用默认设置以外的东西。 关于ruby-on-rails-闪存消息存储在哪里?,我们在StackOverf

  9. Ruby SSL 错误 - sslv3 警报意外消息 - 2

    我正在尝试在ruby​​脚本中连接到服务器https://www.xpiron.com/schedule。但是,当我尝试连接时:require'open-uri'doc=open('https://www.xpiron.com/schedule')我收到以下错误消息:OpenSSL::SSL::SSLError:SSL_connectreturned=1errno=0state=SSLv2/v3readserverhelloA:sslv3alertunexpectedmessagefrom/usr/local/lib/ruby/1.9.1/net/http.rb:678:in`conn

  10. ruby-on-rails - Ruby on Rails - 需要在每周的特定时间将消息发送到电子邮件 - 2

    我想知道我应该如何着手这个项目。我需要每周向人们发送一次电子邮件。但是,这必须在每周的特定时间自动生成并发送。编码有多难?我需要知道是否有任何书籍可以提供帮助,或者你们中的任何人是否可以指导我。它必须使用ruby​​onrails进行编程。因此有一个网络服务和数据库集成。干杯 最佳答案 为什么这么复杂?您只需安排工作。您可以使用Delayed::Job例如。Delayed::Job让您可以使用run_at符号在特定时间安排作业,如下所示:Delayed::Job.enqueue(SendEmailJob.new(...),:run_

随机推荐