随笔分类 - 消息队列 / RabbitMQ
摘要:## 1.优先队列 #### 1.1 场景 在我们系统中有一个订单催付的场景,我们的客户在天猫下的订单淘宝会及时将订单推送给我们,如 果在用户设定的时间内未付款那么就会给用户推送一条短信提醒, 很简单的一个功能对吧,但是, tmall 商家对我们来说,肯定是要分大客户和小客户的对吧,比如像苹果,小米
阅读全文
摘要:## 1.概念 在生产环境中由于一些不明原因, 导致rabbitmq重启,在RabbitMQ重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行RabitMQ的消息可靠投递呢? 特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,无法投递的消息
阅读全文
摘要:## 1.延迟队列概念 延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上 延时队列中的元素是希望在指定时间到了以后或之前取出和处理 简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。 ## 2.使用场景 1.订单在十分钟之内未支付则自动取消 2.新创建的店铺,如果在十天内
阅读全文
摘要:## 1.死信 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解, 一般来说,producer将消息投递到broker或者直接到queue里了, consumer 从queue取出消息进行消费, 但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样
阅读全文
摘要:## 1.概念 假设的是工作队列背后,每个任务都恰好交付给一个消费者(工作进程)。 在这一部分中,我们将做一些完全不同的事情我们将消息传达给多个消费者。 这种模式称为”发布/订阅”. 为了说明这种模式,我们将构建一个简单的日志系统。 它将由两个程序组成:第一个程序将发出日志消息,第二个程序是消费者。
阅读全文
摘要:## 1.原理 生产者将信道设置成confirm模式,一旦信道进入confirm模式,所有在该信道上面发布的消息都将会被指派一个唯一的ID(从1开始) 一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一ID), 这就使得生产者知道消息已经正确到达到的队列了 如果
阅读全文
摘要:## 1.概念 工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。 相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。 在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。 ![](https://img
阅读全文
摘要:1.依赖 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.8.0</version> </dependency> <dependency> <groupId>co
阅读全文
摘要:1.RabbitMQ的概念 RabbitMQ是一个消息中间件:它接受并转发消息。 你可以把它当做一一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里 按照这种逻辑RabbitMQ是一个快递站,一个快递员帮你传递快件。 RabitMQ与快递站的主要区别在于
阅读全文
摘要:1.下载Erlang和rabbitmq 2.安装Erlang配置环境变量 系统变量 用户变量path 命令erl 查看是否配置成功 3.安装rabbitMQ 3.1 安装 3.2 开启服务 命令行cd到RabbitMQ的sbin目录。 输入以下命令 rabbitmq-plugins enable r
阅读全文