RabbitMQ
文章平均质量分 52
RabbitMq
小哇666
专注web/大数据
展开
-
springboot整合rabbitMQ系列10 利用插件实现延时消息
【代码】springboot整合rabbitMQ系列10 利用插件实现延时消息。原创 2024-04-23 15:34:31 · 280 阅读 · 3 评论 -
springboot整合rabbitMQ系列5 死信列队3种情况演示1 basic.nack 并且不再重新投递 requeue=false 和 2 ttl消息 3 达到队列最大长度 三种情况
关于死信队列的描述,可查看博文https://blog.csdn.net/qq_41712271/article/details/115658848?spm=1001.2014.3001.55011 application.yml配置文件server: port: 8021spring: #给项目来个名字 application: name: rabbitmq-test #配置rabbitMq 服务器 rabbitmq: host: 127.0.0.1 .原创 2021-04-14 17:57:24 · 981 阅读 · 1 评论 -
springboot整合rabbitMQ系列1 启动服务后便自动创建交换机,队列,绑定关系等
参考博文https://blog.csdn.net/zhangshengqiang168/article/details/104753133启动服务不默认先创建队列的话,在启动消费者时候,消费者服务监听会找不到对应的队列而报错,启动失败1 application.yml配置server: port: 8021spring: #给项目来个名字 application: name: rabbitmq-test #配置rabbitMq 服务器 rabbitmq: h原创 2021-04-13 18:27:18 · 7628 阅读 · 3 评论 -
springboot整合rabbitMQ系列6 死信队列演示,消息被拒绝(basicReject/ basicNack)并且不再重新投递到队列时requeue=false
先用rabbitmq控制台创建正常的交换机,队列,死信的交换机,队列,绑定关系等,查看以下博文,只要以下文章的1-3步,因为这里演示另种情况,消息到死信队列https://blog.csdn.net/qq_41712271/article/details/115658848?spm=1001.2014.3001.5501生产者为方便,直接用rabbitmq控制台发送消息创建一个消费者工程,并手动ack确认,部分api的使用可查看以下博文,https://blog.csdn.net/qq_4171227.原创 2021-04-13 13:44:34 · 1696 阅读 · 0 评论 -
springboot整合rabbitMQ系列7 死信队列演示,发送TTL超时消息,即存活时间
死信队列:没有被及时消费的消息存放的队列,消息没有被及时消费有以下几点原因: a.消息被拒绝(basic.reject/ basic.nack)并且不再重新投递 requeue=false b.TTL(time-to-live) 消息超时未消费 c.达到最大队列长度消息变成死信后,会被重新投递(publish)到另一个交换机上(Exchange),这个交换机往往被称为DLX(dead-letter-exchange)“死信交换机”,然后交换机根据绑定规则转发到对应的队列上,监听该队列原创 2021-04-13 12:15:27 · 1018 阅读 · 0 评论 -
springboot整合rabbitMQ系列8 设置消息过期时间TTL,即存活时间
主要有2种方式,如果同时指定了Message TTL和Queue TTL,则优先较小的那一个。: 指定一条消息的过期时间。 给队列设置消息过期时间,队列中的所有消息都有同样的过期时间。 队列设置的方式import org.springframework.amqp.core.Binding;import org.springframework.amqp.core.BindingBuilder;import org.springframework.amqp.core.DirectE原创 2021-04-12 22:05:53 · 3356 阅读 · 0 评论 -
springboot整合rabbitMQ系列9 消费者Consumer限流
场景:请求瞬间增多,每秒5000个请求,防止A系统挂掉注意:一定要开启手动ack确认1 application.yml配置文件server: port: 8021spring: #给项目来个名字 application: name: rabbitmq-test #配置rabbitMq 服务器 rabbitmq: host: 127.0.0.1 port: 5672 username: need password: 123456原创 2021-04-12 20:33:33 · 1001 阅读 · 1 评论 -
springboot整合rabbitMQ系列4 消费者Consumer 手动进行ack确认---消费者做到可靠性方案
ack指Acknowledge,确认。 表示消费端收到消息后的确认方式。有三种确认方式:自动确认:acknowledge="none"手动确认:acknowledge="manual"根据异常情况确认:acknowledge="auto",(这种方式使用麻烦,不作讲解)其中自动确认是指,当消息一旦被Consumer接收到,则自动确认收到,并将相应 message 从 RabbitMQ 的消息缓存中移除。但是在实际业务处理中,很可能消息接收到,业务处理出现异常,那么该消息就会丢失。如果设置了手动确原创 2021-04-12 17:29:50 · 3634 阅读 · 0 评论 -
springboot整合rabbitMQ系列3 消息发布的可靠性投递(生产者发送消息到mq服务器)---生产者可靠性投递
以下功能是在此项目上升级https://blog.csdn.net/qq_41712271/article/details/115619405?spm=1001.2014.3001.5501在使用 RabbitMQ的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。也可以用事务,但性能较差,一般不用RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。confirm 确认模式return 退回模式rabbitmq 整个消息投递的路径为:producer--->rab.原创 2021-04-12 15:54:26 · 795 阅读 · 0 评论 -
springboot整合rabbitMQ系列2 演示DirectExchange,TopicExchange,FanoutExchange交换机 发送和接收消息
1 添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>2 配置application.yml文件server: port: 8021spring: #给项目来个名字原创 2021-04-12 14:02:03 · 603 阅读 · 0 评论 -
RabbitMQ开通STOMP通道,为websocket整合rabbitmq做准备
进入到RabbitMQ安装目录下的sbin文件夹内cmd进入rabbitmq-plugins enable rabbitmq_web_stomprabbitmq-plugins enable rabbitmq_web_stomp_examples成功后重启RabbitMQ即可原创 2021-03-28 00:29:14 · 1050 阅读 · 1 评论 -
[文档] RabbitMq入门-Exchange交换机的模式详解
转发器一方面它接受生产者的消息,另一方面向队列推送消息。Nameless exchange(匿名转发) 之前我们对转换器一无所知,却可以将消息发送到队列,那是可能是我们用了默认的转发器,转发器名为空字符串""。比如之前我们发布简单消息的代码是:channel.basicPublish("", "hello", null, message.getBytes());...原创 2020-03-28 22:29:52 · 170 阅读 · 1 评论 -
[纯原生方式] RabbitMq入门-6 RabbitMq API实现 交换机Exchange Topic主题模式
个人理解,就是路由模式的升级版,routingKey更灵活路由模式可查看博文https://blog.csdn.net/qq_41712271/article/details/105167669routing_key- 它必须是由点分隔的单词列表,如 book.add,book.select.first等绑定支持通配符:” *“表示任何一个词 ”#“表示0或1个词生产者核心代码c...原创 2020-03-28 21:37:47 · 273 阅读 · 1 评论 -
[纯原生方式] RabbitMq入门-5 RabbitMq API实现 交换机Exchange Direct路由模式
什么是路由模式(direct) 路由模式是在使用交换机的同时,生产者指定路由发送数据,消费者绑定路由接受数据。与发布/订阅模式不同的是,发布/订阅模式只要是绑定了交换机的队列都会收到生产者向交换机推送过来的数据。而路由模式下加了一个路由设置,生产者向交换机发送数据时,会声明发送给交换机下的那个路由,并且只有当消费者的队列绑定了交换机并且声明了路由,才会收到数据。 发布...原创 2020-03-28 20:45:19 · 236 阅读 · 1 评论 -
[纯原生方式] RabbitMq入门-4 RabbitMq API实现 交换机Exchange Fanout发布订阅模式
如果想 发 一个消息,能 被多个消费者消费,这时候 就得用到发布订阅模型举列: 类似微信订阅号 发布文章消息 就可以广播给所有的接收者。(订阅者)解读:1、1 个生产者,多个消费者2、每一个消费者都有自己的一个队列3、生产者没有将消息直接发送到队列,而是发送到了交换机(转发器)4、每个队列都要绑定到交换机5、生产者发送的消息,经过交换机,到达队列,实现,一个消息被多个消费...原创 2020-03-28 19:43:31 · 266 阅读 · 1 评论 -
[文档] RabbitMq 消息应答与消息持久化
消息应答boolean autoAck = false; channel.basicConsume(QUEUE_NAME, autoAck, consumer); boolean autoAck = true;(自动确认模式)一旦 RabbitMQ 将消息分发给了消费者,就会从内存中删除。在这种情况下,如果杀死正在执行任务的消费者,会丢失正在处理的消息,也会丢失已经分发给这个...原创 2020-03-28 17:03:34 · 140 阅读 · 1 评论 -
[纯原生方式] RabbitMq入门-3 RabbitMq API实现 工作队列-公平分发 (能者多劳,避免消费者那边 忙的忙死,闲的闲死)
最好先看看 工作队列中 轮询分发,再继续看此文章轮询分发,可参考博文https://blog.csdn.net/qq_41712271/article/details/105161445虽然轮询分发的分配法方式也还行,但是有个问题就是:比如:现在有 2 个消费者,所有的偶数的消息都是繁忙的,而 奇数则是轻松的。按照轮询的方式,偶数的任务交给了第一个消费者,所以一直在忙个不停。奇数的任务...原创 2020-03-28 16:44:49 · 245 阅读 · 1 评论 -
[纯原生方式] RabbitMq入门-2 RabbitMq API实现 工作队列-轮询分发 (你消费一个,我消费一个)
为什么会出现工作队列前提:我们应用程序在使用消息系统的时候,一般生产者 P 生产消息是毫不费力的(发送消息即可),而消费者接收完消息 后需要处理,会耗费一定的时间,这时候,就有可能导致很多消息堆积在队列里面,一个消费者有可能不够用那么怎么让消费者同事处理多个消息呢? 在同一个队列上创建多个消费者,让他们相互竞争,这样消费者就可以同时处理多条消息了使用任务队列的优点之一...原创 2020-03-28 15:22:19 · 426 阅读 · 2 评论 -
[纯原生方式] RabbitMq入门-1 RabbitMq API实现 简单队列
一个生产者对应一个消费者 生产者将消息发送到“hello”队列。消费者从该队列接收消息。1 新建一个普通的maven项目,添加依赖<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</...原创 2020-03-28 14:10:55 · 297 阅读 · 1 评论 -
[文档] RabbitMQ基本架构和基本概念入门
Message (消息) : 消息是不具名的,它由消息头和消息体组成。消息体是不透明的,而消息头则由一系列可选属性组成,这些属性包括routing-key (路由键)、priority (相对于其他消息的优先级〉、delivery-mode(指出该消息可能需要持久化存储)等。 Publisher (消息生产者) : 一个向交换器发布消息的客户端应用程序。 Exchange (交...原创 2020-03-28 13:54:31 · 182 阅读 · 1 评论