RabbitMQ小结
消息队列:AMQP高级消息队列协议。MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义,而MQ则是遵循了AMQP协议的具体实现和产品。
目前,Spring唯一实现了RabbitMQ,但并不是说不支持其他的。
大数据方面,一般使用Kafka。
Producer:
创建连接,是指连接到路由吗?连接后,创建通道,是否专属的意思?是否可以多条通道?
通道后声明创建队列,将消息发送至队列,等待消费者。(ready,unacked,total)
关闭资源(通道,连接)。
Consumer:
获取连接;获取通道;声明队列;定义队列的消费者;监听队列;获取消息。
简单队列 :1P 1C。
WORK队列:1P NC。又有平均分配和能者多劳两种模式,平均分配的时候是自动反馈完成状态,能者多劳时则需要手动返回完成状态。
能者多劳模式还需要设置发送消息数量为1, channel.basicQos(1); channel.basicConsume(QUEUE_NAME,false,consumer);
订阅队列 :1P X(EXCHANGE) NC。【】需要声明交换机(注意交换机类型)。
项目中,修改商品时,发送消息至rabbitmq,前台系统删除缓存,更新索引。
【】注意启动顺序,由于生产者声明交换机,所以必须先启动生产者,再启动消费者。
三种交换机:
FANOUT EXCHANGE(无绑定路由键处理,分发消息至所有队列,类似广播);
DIRECT EXCHANGE(消费者需要将一个队列绑定到交换机上,然后交换机会将路由键完全匹配的消息发送至该队列【发送消息时声明路由键,接收时也要声明路由键,一致才行】);完整匹配。
TOPIC EXCHANGE(匹配交换机:将路由键和某模式进行匹配,#匹配一个或多个词,*匹配一个词。所以item.#可以匹配item.update.web,item.*只能匹配item.update)
注意:有内存队列和持久化队列,内存交换机和持久化交换机。可以通过spring配置文件中的durable参数设置。区别就是速度效率和安全方面。
Spring整合RabbitMQ需要使用spring-amqp(包含spring-amqp和spring-rabbitmq)。
队列和交换机的绑定方式:代码、配置文件、管理界面。
20160901补充:
AMQP是协议,格式如下图(取自 Understanding AMQP, the protocol used by RabbitMQ):
这里的Headers 和Properties 都是简单的键值对,区别在于前者的键是协议内定的,后者则是任意的。
例如,一个标准的Header:routing-key 。而每个queue都有一个 binding-key,如果能和 routing-key 匹配,那就会收到消息。(是否匹配还要注意路由模式)
转载于:https://www.cnblogs.com/larryzeal/p/5336381.html
RabbitMQ小结相关推荐
- 2021最新版RabbitMQ完整教程学习笔记
文章目录 一.中间件 1. 什么是中间件 2. 中间件技术及架构的概述 3. 基于消息中间件的分布式系统的架构 4. 消息队列协议 5. 消息队列持久化 6. 消息的分发策略 7. 消息队列高可用和高 ...
- RabbitMQ(七):常用方法说明 与 学习小结
RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 RabbitMQ(三):Exchange交换器--fanout ...
- amqp协议_AMQP协议、模型及RabbitMQ常用组件
大家好,我是小T 今天咱们来介绍RabbitMQ的消息发送的原理 ^-^ RabbitMQ作为一款消息中间件,它的核心功能主要是消息的收发.消息收发的媒介是通过网络传输来实现的. RabbitMQ最底 ...
- rabbitmq 同步策略_RabbitMQ(三):消息持久化策略
一.前言 在正常的服务器运行过程中,时常会面临服务器宕机重启的情况,那么我们的消息此时会如何呢?很不幸的事情就是,我们的消息可能会消失,这肯定不是我们希望见到的结果.所以我们希望AMQP服务器崩溃了也 ...
- RabbitMQ 延迟消息的极限是多少?
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 之前在写Spring Cloud Stream专题内容的时候,特地介绍了一下如何使用Rabb ...
- 用户请求队列化_爬虫架构消息队列应用场景及ActiveMQ、RabbitMQ、RocketMQKafka
前言:在之前的业务中,使用了Kafka和RabbitMQ两种消息队列,这篇文章来做一个总结. 消息队列中间件是分布式系统中重要的组件,主要实现异步消息,应用解耦,流量削峰及消息通讯等功能. 下面举例说 ...
- 【学习笔记】rabbitmq设置队列ttl和使用延迟插件的代码示例
文章目录 设置队列ttl 配置文件 生产者 消费者 设置消息ttl 延迟插件的使用 修改配置文件 修改生产者 修改消费者 设置队列ttl 代码架构: 创建两个队列QA和QB,两者队列TTL分别设置为1 ...
- RabbitMQ(六):回调队列callback queue、关联标识correlation id、实现简单的RPC系统
博客翻译自:RabbitMQ Tutorials Java版 RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 ...
- RabbitMQ(五):Exchange交换器--topic
内容翻译自:RabbitMQ Tutorials Java版 RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 ...
最新文章
- Linux的nm查看动态和静态库中的符号
- G - 数据结构实验之查找七:线性之哈希表
- vsftp 无法启动,500 OOPS: bad bool value in config file for: anonymous_enable
- Scrapy爬虫进阶操作之CrawlSpider(一)
- ITIL 4讲解:ITIL4的设计框架解析
- SQLSERVER 查询分析器快捷键
- 汉王考勤系统服务器IP,汉王人脸识别考勤客户端使用说明
- [leetcode题解] 第995题Minimum Number of K Consecutive Bit Flips
- SAP中会计凭证红蓝冲相关分析测试笔记续(手工反记账红冲)
- w锋ndows用户组设置,第2章Wndows+Server+2008本地用户和组.ppt
- 关于Big-O表示法
- 55 个 Linux 练手项目合集,打通你的 Linux 任督二脉 !
- **视频会议设备连接注意事项**
- 弹性ip是可以加入共享带宽?
- Kubernetes基础:MacOS上设定Dashboard
- 计算机基础知识竞赛ppt,计算机基础知识竞赛.doc
- 电压(主要介绍和计算方法)
- js中的for in循环
- linux命令ls -rlt,如何使用BPF将SSH会话转换为结构化事件
- Flexsim案例分析2
热门文章
- c语言标准函数库怎么建立教程,C语言入门教程-创建一个函数库
- ffmpeg 2.6.3在Windows系统MinGW的编译
- mysql数据库主主_MySQL主主复制(图文详解)
- 95-860-040-源码-定时器-SystemProcessingTimeService简介
- 【Elasticsearch】es 插入数据 性能优化 以及 影响插入的因素
- 【ElasticSearch】Es 源码之 CcrRestoreSourceService 源码解读
- 60-100-022-使用-MySQL 开启全局查询日志
- 1.1.0-简介-P11-分布式锁的解决方案
- 【MySQL】Java.sql.SQLException Incorrect string value: \xF0\x9F\x98\x8D\xE8\xBE...
- 【SpringBoot】SpringBoot之Bean之自动加载