首页 > 其他分享 >MQ消息

MQ消息

时间:2024-08-29 17:06:47浏览次数:9  
标签:队列 RabbitMQ 死信 MQ 消息 RocketMQ 延迟

RocketMQ 延迟消息

  延迟消息,当消息写入到 Broker 后,不会立刻被消费者消费,需要等待指定的时长后才可被消费处理的消息,称为延时消息。在订单创建之后,我们就可以把订单作为一条消息投递到 rocketmq,并将延迟时间设置为 30 分钟,
这样30分钟后我们定义的 consumer 就可以消费到这条消息,然后检查用户是否支付了这个订单。通过延迟消息,我们就可以将业务解耦,极大地简化我们的代码逻辑。优点:可以使代码逻辑清晰,系统之间完全解耦,
只需关注生产及消费消息即可。另外其吞吐量极高,最多可以支撑万亿级的数据量。

缺点:相对来说 mq 是重量级的组件,引入 mq 之后,随之而来的消息丢失、幂等性问题等都加深了系统的复杂度。
总结:通过 mq 进行系统业务解耦,以及对系统性能削峰填谷已经是当前高性能系统的标配。

RabbitMQ 死信队列

  除了 RocketMQ 的延迟队列,RabbitMQ 的死信队列也可以实现消息延迟功能。当 RabbitMQ 中的一条正常消息,因为过了存活时间(TTL 过期)、队列长度超限、被消费者拒绝等原因无法被消费时,就会被当成一条死信消息,投递到死信队列。
基于这样的机制,我们可以给消息设置一个 ttl,然后故意不消费消息,等消息过期就会进入死信队列,我们再消费死信队列即可。通过这样的方式,就可以达到同 RocketMQ 延迟消息一样的效果。

优点:同 RocketMQ 一样,RabbitMQ 同样可以使业务解耦,基于其集群的扩展性,也可以实现高可用、高性能的目标。
缺点:死信队列本质还是一个队列,队列都是先进先出,如果队头的消息过期时间比较长,就会导致后面过期的消息无法得到及时消费,造成消息阻塞。
总结:除了增加系统复杂度之外,死信队列的阻塞问题也是需要我们重点关注的。

标签:队列,RabbitMQ,死信,MQ,消息,RocketMQ,延迟
From: https://www.cnblogs.com/sitting-on-the-clouds/p/18387051

相关文章

  • NETCORE下用SKIT类库发送微信模板消息
    NETCORE下用SKIT类库发送微信模板消息 //测试发送模板消息-微信公众号//https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#5publicasyncTask<IActionResult>Ceshi(intid,stringopenid)......
  • 系统编程-消息队列
    消息队列目录消息队列引入一、消息队列的特点二、使用指令查看消息队列三、使用消息队列进行通信的步骤1、获取键值2、创建或获取消息队列id3、使用消息队列进行数据的传输4、msgrcv--从消息队列中读取数据5、消息队列的多种操作函数引入--进程间通信(IPC)......
  • YOLOv9改进策略【注意力机制篇】| 引入MobileNetv4中的Mobile MQA,提高模型效率
    一、本文介绍本文记录的是基于MobileMQA模块的YOLOv9目标检测改进方法研究。MobileNetv4中的MobileMQA模块是用于模型加速,减少内存访问的模块,相比其他全局的自注意力,其不仅加强了模型对全局信息的关注,同时也显著提高了模型效率。文章目录一、本文介绍二、MobileMQA......
  • 消息队列MQ的使用
    承接我的另一篇博客 消息队列MQ-CSDN博客启动服务1.启动mqnamesrv2.启动mqbrokermqbroker-n127.0.0.1:9876应用1.普通消息同步发送publicclassEasyA{publicstaticvoidmain(String[]args)throwsMQClientException,MQBrokerException,RemotingExce......
  • 优化拓展Camstar原生弹窗提示,解决原生消息提示无效或被覆盖的场景
    1.参考代码如下 1usingCamstar.WebPortal.PortalFramework;2usingSystem;3usingSystem.Web.UI;45namespaceCamstar.WebPortal.WebPortlets.Shopfloor6{7///<summary>8///優化拓展Camstar原生消息彈窗提示,解決原生消息提示無效或被覆蓋......
  • 抖音私信回复图片接口-企业号授权到开放平台-调用上传图片并发送私信消息
    抖音私信回复图片接口企业号授权到开放平台调用上传图片并发送私信消息这样用户就可以在客服后台,直接给私信用户发送图片了感兴趣的+\/  : llike620golang代码//获取ClientTokenfunc(this*Douyin)GetClientToken()(string,error){url:="https://open.......
  • MQ根据正常队列、死信队列来实现延迟队列的场景
     1、在RabbitMQ的管理后台新建交换机(exchange);名称(Name):**ParkingExchange**类型(Type):**fanout**持久化(Durability):**Durable**2、在RabbitMQ的管理后台新建队列(queue);名称(Name):**ParkingQueue**类型(Type):**Classic**(新版本RabbitM......
  • Apache RocketMQ 批处理模型演进之路
    作者:谷乂RocketMQ的目标,是致力于打造一个消息、事件、流一体的超融合处理平台。这意味着它需要满足各个场景下各式各样的要求,而批量处理则是流计算领域对于极致吞吐量要求的经典解法,这当然也意味着RocketMQ也有一套属于自己风格的批处理模型。至于什么样的批量模型才叫“属于......
  • CAS5和CAS6自定义异常提示消息
    CAS5和CAS6自定义异常提示消息使用cas登录时,如果登录错误页面应该提示一下错误消息,cas自带的有一些,不适用的话就需要自定义自己的异常消息提示了。自定义异常提示消息自定义异常消息类例如:验证码异常消息类importjavax.security.auth.login.AccountExpiredException;......
  • Go使用rocketmq实现简单消息
    注意,当前使用的不是grpc协议生产者packagemainimport( "context" "fmt" "github.com/apache/rocketmq-client-go/v2" "github.com/apache/rocketmq-client-go/v2/primitive" "github.com/apache/rocketmq-client-go/v2/producer&q......