
消息队列-RabbitMq&RocketMq
文章平均质量分 74
消息队列-RabbitMq
OkidoGreen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RabbitMQ - DLX (Dead Letter Exchanges)实现延迟队列
而通过配置队列的x-dead-letter-exchange及x-dead-letter-routing-key键值,DeadLetter就会被重新发送到指定的DLX中。生产者发布的消息路由到该延迟队列,30秒后消息成为死信并被重新发送到死信交换器DLX中;消费者订阅死信队列DLQ,消费消息。...转载 2022-07-27 16:53:10 · 605 阅读 · 0 评论 -
RabbitMQ Exchange类型详解
rabbitmq转载 2022-06-13 20:18:48 · 1556 阅读 · 0 评论 -
【重点】springboot + rabbitmq + mqtt协议 做智能家居
前一段有幸参与到一个智能家居项目的开发,由于之前都没有过这方面的开发经验,所以对智能硬件的开发模式和技术栈都颇为好奇。智能可燃气体报警器产品是一款可燃气体报警器,如果家中燃气泄露浓度到达一定阈值,报警器检测到并上传气体浓度值给后台,后台以电话、短信、微信等方式,提醒用户家中可能有气体泄漏。用户还可能向报警器发一些关闭报警、调整音量的指令等。整体功能还是比较简单的,大致的逻辑如下图所示:但当我真正的参与其中开发时,其实有一点小小的失望,因为在整个研发过程中,并没用到什么新...转载 2020-11-25 13:14:22 · 6224 阅读 · 3 评论 -
RocketMq中MessageQueue的分配
都知道Rocketmq中有ConsumerGroup的概念。在集群模式下,多台服务器配置相同的ConsumerGroup,能够使得每次只有一台服务器消费消息(注意,但不保证只消费一次,存在网络抖动的情况)。那么,笔者就很疑惑,Rocketmq是如何实现这个模式的?如何保证只有一台服务器消费?虽然答案很简单,但却是一个很好的带着问题看源码的机会。RocketMq结构从图中可以看到,MQ主要投递消息和拉取消息两个环节。众多的架构都是顺应时代潮流而来,Rocketmq的结构体系当然也不是阿里所转载 2020-11-23 10:58:22 · 4884 阅读 · 0 评论 -
RocketMQ广播消费与集群消费
1.集群消费方式一个ConsumerGroup中的Consumer实例平均分摊消费生产者发送的消息。例如某个Topic有九条消息,其中一个Consumer Group有三个实例(可能是3个进程,或者3台机器),那么每个实例只消费其中的3条消息,Consumer不指定消费方式的话默认是集群消费的,适用于大部分消息的业务2.广播消费方式一条消息被多个Consumer消费,几十这些Consumer属于同一个ConsumerGroup,消息也会被ConsumerGroup中的每个Consumer消费一次,广播消转载 2020-11-23 10:39:19 · 1310 阅读 · 2 评论 -
RocketMQ——角色与术语详解
RocketMQ中有很多概念,其中包括一些术语和角色。理清楚基本的概念能有效的帮助理解RocketMQ的原理以及排查问题。角色:Producer生产者。发送消息的客户端角色。发送消息的时候需要指定Topic。Consumer消费者。消费消息的客户端角色。通常是后台处理异步消费的系统。 RocketMQ中Consumer有两种实现:PushConsumer和PullConsumer。PushConsumer推送模式(虽然RocketMQ使用的是长轮询)的消费者。消息的能及时被消转载 2020-11-23 10:38:41 · 565 阅读 · 0 评论 -
RocketMQ的负载均衡源码分析
https://www.cnblogs.com/KevinStark/p/12518766.html转载 2020-11-22 17:41:03 · 528 阅读 · 0 评论 -
RocketMQ的事务消息处理【half-message】
处理流程producer 发送half message到broker中; broker接收到half message后给producer发送成功的发聩,这时,half message才算真正生成完了; producer执行本地事务; producer根据第3步得到执行本地事务的结果,向MQ进行二次确认(到底是commit还是roll back)。如果是commit就将这个half message变为消费者可以消费的消息,此时消费者接收到这条half message。如果是roll back,那转载 2020-11-22 17:30:45 · 3657 阅读 · 2 评论 -
分布式事务解决方案-RocketMQ实现可靠消息最终一致性
1.什么是可靠消息最终一致性事务 可靠消息最终一致性方案是指当事务发起方执行完成本地事务后并发出一条消息,事务参与方(消息消费者)一定能够接收消息并处理事务成功,此方案强调的是只要消息发给事务参与方最终事务要达到一致。 此方案是利用消息中间件完成,如下图: 事务发起方(消息生产方)将消息发给消息中间件,事务参与方从消息中间件接收消息,事务发起方和消息中间件之间,事务参与方(消息消费方)和消息中间件之间都是通过网络通信,由于网络通信的不确定性会导致分布式事务问题。因此可靠..转载 2020-11-22 17:29:31 · 1016 阅读 · 1 评论 -
rocketmq-spring-boot-starter 2.1.0 事务消息 txProducerGroup 移除解读
为了体验rocketmq的request-reply模型,近日将demo中rocketmq-spring-boot-starter库升级到2.1.0版本 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <!--转载 2020-11-22 17:20:37 · 4437 阅读 · 4 评论 -
RocketMq-Spring 请求应答语义支持
RocketMQ-Spring 提供 请求/应答 语义支持。Producer端发送Request消息使用SendAndReceive方法注意同步发送需要在方法的参数中指明返回值类型异步发送需要在回调的接口中指明返回值类型@SpringBootApplicationpublic class ProducerApplication implements CommandLineRunner{ @Resource private RocketMQTemplate roc转载 2020-11-22 17:18:49 · 2412 阅读 · 0 评论 -
SpringCloud集成RocketMQ实现事务消息方案
当前SpringCloud作为微服务开发的首选开源方案提供了完善的微服务开发技术套件,不过针对分布式领域的难题–分布式事务控制并没有成熟的方案,本篇将介绍作为柔性事务控制的优秀方案RocketMQ的使用原理和方法。通过本案例的学习,掌握SpringCloud集成RocketMQ事务分布式事务控制的方法。RocketMQ事务消息方案RocketMQ 是一个来自阿里巴巴的分布式消息中间件,于 2012 年开源,并在 2017 年正式成为 Apache 顶级项目。据了解,包括阿里云上的消息产品以及收购的转载 2020-11-22 15:55:07 · 765 阅读 · 0 评论 -
RocketMq在阉割消息回查checkTransactionState后实现分布式事务
利用rocketMQ解决分布式事务在rocketMQ中生产者有三种角色NormalProducer(普通)、OrderProducer(顺序)、TransactionProducer(事务)根据名字大概可以看出各个代表着什么作用,我们这里用TransactionProducer(事务)来解决问题。先举个列子来说明下我们解决方案的设计方式吧:最经典的莫过于银行转账了,网上到处都有,时序图如下下面贴一下测试代码:(1) 执行业务逻辑的部分/** * @Date: Created in..转载 2020-11-22 13:41:58 · 1234 阅读 · 0 评论 -
RocketMQ支持事务消息机制
事务消费我们经常支付宝转账余额宝,这是日常生活的一件普通小事,但是我们思考支付宝扣除转账的钱之后,如果系统挂掉怎么办,这时余额宝账户并没有增加相应的金额,数据就会出现不一致状况了。上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记录外,对应商品表的这个商品数量必须减1吧,怎么保证?!在搜索广告系统中,当用户点击某广告后,除了在点击事件表中增加一条记录外,还得去商家账户表中找到这个商家并扣除广告费吧,怎么保证?!等等,相信大家或多或多少都能碰到相似情景转载 2020-11-22 11:11:19 · 809 阅读 · 1 评论 -
springboot-rabbitMq全量配置说明与使用
基本概念queue:队列,每个队列可以有多个消费者,但是一条消息只会被一个消费者消费exchange:交换机,队列可以绑定交换机,交换机根据路由或者其他匹配信息将消息发送至queue模式介绍simple模式:不需要交换机,直连模式。一个队列只有一个消费者work模式:一个队列多个消费者direct模式:需要交换机,通过交换机的路由key,精确匹配queue,并发送至对应的queuetopic模式:通过路由与路由key,模糊匹配的模式。可用通配符。比如key.1会被绑定路由key.转载 2020-11-09 20:44:48 · 1431 阅读 · 1 评论 -
RabbitMQ配置之mandatory,publisher-returns相关
在SpringBoot的RabbitMQ配置中,有如下一项:spring.rabbitmq.template.mandatory = true官方注释:Enable mandatory messages. If a mandatory message cannot be routed to a queue by the server, it will return an unroutable message with a Return method.大意为:开启强制消息投递(mandator转载 2020-11-01 16:03:33 · 1615 阅读 · 2 评论 -
RabbitMq-SpringBoot 死信队列的应用
https://www.cnblogs.com/yangk1996/p/12674015.htmlhttps://blog.csdn.net/weixin_43732955/article/details/109094293https://www.cnblogs.com/ybyn/p/13691078.htmlhttps://www.jianshu.com/p/be0361e222achttps://www.it610.com/article/1305463084378263552.htm原创 2020-11-01 15:43:30 · 577 阅读 · 0 评论 -
RabbitMQ -springboot整合rabbitmq
课程:https://www.cnblogs.com/guchunchao/p/13173406.html阅读目录配置生产者 配置消费者导入pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc.转载 2020-11-01 15:29:22 · 718 阅读 · 0 评论 -
RabbitMQ如何解决各种情况下丢数据的问题
1.生产者丢数据生产者的消息没有投递到MQ中怎么办?从生产者弄丢数据这个角度来看,RabbitMQ提供transaction和confirm模式来确保生产者不丢消息。transaction机制就是说,发送消息前,开启事物(channel.txSelect()),然后发送消息,如果发送过程中出现什么异常,事物就会回滚(channel.txRollback()),如果发送成功则提交事物(channel.txCommit())。然而缺点就是吞吐量下降了。因此,按照博主的经验,生产上用confirm模转载 2020-11-01 15:27:17 · 1141 阅读 · 0 评论 -
Spring Boot 对rabbitmq批量处理数据的支持
一丶前言 在生产中,存在一些场景,需要对数据进行批量操作。如,可以先将数据存放到redis,然后将数据进行批量写进数据库。但是使用redis,不得不面对一个数据容易丢失的问题。也可以考虑使用消息队列进行替换,在数据持久化,数据不丢失方面,消息队列确实比redis好一点,毕竟设计不一样。是不是使用消息队列,就一定好呢?不是的,首先使用消息队列,不能确保数据百分百不丢失,(如果要做到百分百不丢失,设计上就会比较复杂),除此之外,还要面对数据重复的问题。消息丢失,消息重复,是使用消息队列必须面对的问题。转载 2020-11-01 15:24:50 · 4728 阅读 · 2 评论 -
rabbitmq 重复确认导致消息丢失 [unknown delivery tag 1]
背景rabbitmq 在应用场景中,大多采用工作队列 work-queue的模式。在一个常见的工作队列模式中,消费者 worker 将不断的轮询从队列中拉取最新消息,当队列负载压力增大时允许添加多个worker 进行处理。然而执行一个任务可能需要相当的时长,这是由业务特性所决定的;如果 worker执行任务过程中出现异常甚至宕机,此时消息便会丢失,这是简单消息队列难以解决的问题。rabbitmq 采用了消息确认机制来防止此类问题,在该机制中,worker需要向 MQ Server 返回 ACK转载 2020-11-01 15:23:46 · 10213 阅读 · 0 评论 -
SpringBoot+RabbitMQ (保证消息100%投递成功并被消费、邮件推送重发)
前言:RabbitMQ相关知识请参考: https://www.jianshu.com/p/cc3d2017e7b3Linux安装RabbitMQ请参考: https://www.jianshu.com/p/ee9f7594212bWindows安装RabbitMQ请参考: https://www.jianshu.com/p/c7726ba4b046一、先扔一张图image.png说明:本文涵盖了关于RabbitMQ很多方面的知识点, 如:消息发送确认机制 消费确认机制.转载 2020-11-01 13:52:26 · 1183 阅读 · 0 评论 -
springboot rabbitmq属性配置spring.rabbitmq.publisher-confirm和spring.rabbitmq.publisher-confirm-type详解
springboot.rabbitmq.publisher-confirm 新版本已被弃用,现在使用spring.rabbitmq.publisher-confirm-type =correlated 实现相同效果在springboot2.2.0.RELEASE版本之前是amqp正式支持的属性,用来配置消息发送到交换器之后是否触发回调方法,在2.2.0及之后该属性过期使用spring.rabbitmq.publisher-confirm-type属性配置代替,用来配置更多的确认类型;1.sp..原创 2020-11-01 10:47:10 · 11252 阅读 · 3 评论 -
RabbitMQ学习笔记:mandatory、publisher-confirms、publisher-return属性区别
rabbitmq客户端发送消息首先发送的交换器exchange,然后通过路由键routingKey和bindingKey比较判定需要将消息发送到那个队列queue上;在这个过程有两个地方消息可能丢失,第一消息发送到交换器exchange的过程,第二消息从交换器exchange发送到队列queue的过程;1.publiser-confirm模式可以确保生产者到交换器exchange消息有没有发送成功#设置此属性配置可以确保消息成功发送到交换器spring.rabbitmq.publisher-.转载 2020-10-29 21:48:55 · 3983 阅读 · 4 评论 -
RabbitMQ:消息发送确认 与 消息接收确认(ACK)
默认情况下如果一个 Message 被消费者所正确接收则会被从 Queue 中移除如果一个 Queue 没被任何消费者订阅,那么这个 Queue 中的消息会被 Cache(缓存),当有消费者订阅时则会立即发送,当 Message 被消费者正确接收时,就会被从 Queue 中移除消息发送确认发送的消息怎么样才算失败或成功?如何确认?当消息无法路由到队列时,确认消息路由失败。消息成功路由时,当需要发送的队列都发送成功后,进行确认消息,对于持久化队列意味着写入磁盘,对于镜像队列意味着所有镜.转载 2020-10-29 21:45:49 · 956 阅读 · 0 评论 -
RabbitMQ 消息持久化处理 autoDelete属性
autoDelete属性@Queue: 当所有消费客户端连接断开后,是否自动删除 队列 true:删除 false:不删除@Exchange:当所有绑定队列都不在使用时,是否自动 删除交换器 true:删除 false:不删除解决消息丢失的问题(如消费者服务停止,但是消费者)...转载 2020-10-29 21:12:46 · 2076 阅读 · 0 评论 -
Springboot RabbitMq源码解析
Springboot RabbitMq源码解析之配置类Springboot RabbitMq源码解析之消息发送Springboot RabbitMq源码解析之消费者容器SimpleMessageListenerContainerSpringboot RabbitMq源码解析之consumer管理和AmqpEventSpringboot RabbitMq源码解析之RabbitListener注解...转载 2020-10-29 21:11:52 · 844 阅读 · 0 评论 -
rabbitMQ 中三种常用交换机:direct、topic、fanout的使用以及区别
在rabbitmq中有许多交换机,不同的交换机适用于不同的场景。如下:这么多交换机中,最常用的交换机有三种:direct、topic、fanout。我分别叫他们:“直接连接交换机”,“主题路由匹配交换机”,“无路由交换机”。以下是详细的介绍:Direct 交换机这个交换机就是一个直接连接交换机,什么叫做直接连接交换机呢?所谓“直接连接交换机”就是:Producer(生产者)投递的消息被DirectExchange (交换机)转发到通过routingkey绑定到具体的某个Queue(队列),把消转载 2020-10-29 20:28:41 · 1761 阅读 · 0 评论 -
RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较
RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储RabbitMQ提供了四种Exchange:fanout,direct,topic,headerheader模式在实际使用中较少,本文只对前三种模式进行比较。性能排序:fanout > direct >> topic。比例大约为11:10:6一.Direct ExchangeDirect Exchange -处理路由键。需要将一个队列..转载 2020-10-29 20:01:49 · 1814 阅读 · 0 评论 -
Spring Boot整合RabbitMQ
本文RabbitMQ版本为rabbitmq-server-3.7.17,erlang为erlang-22.0.7.请各位去官网查看版本匹配和下载,也可以留言,我发安装包在Spring项目中,可以使用Spring-Rabbit去操作RabbitMQhttps://github.com/spring-projects/spring-amqp尤其是在spring boot项目中只需要引入对应的amqp启动器依赖即可,方便的使用RabbitTemplate发送消息,使用注解接收消息。搭建生...转载 2020-10-29 19:44:19 · 1261 阅读 · 0 评论 -
ActiveMQ死信产生的原因及使用方案
https://blog.csdn.net/m0_37609579/article/details/82216332DLQ-死信队列(Dead Letter Queue)用来保存处理失败或者过期的消息。出现以下情况时,消息会被redeliveredA transacted session is used and rollback() is called(使用一个事务session...转载 2019-03-13 16:11:51 · 2938 阅读 · 0 评论