消息队列: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小结相关推荐

  1. 2021最新版RabbitMQ完整教程学习笔记

    文章目录 一.中间件 1. 什么是中间件 2. 中间件技术及架构的概述 3. 基于消息中间件的分布式系统的架构 4. 消息队列协议 5. 消息队列持久化 6. 消息的分发策略 7. 消息队列高可用和高 ...

  2. RabbitMQ(七):常用方法说明 与 学习小结

    RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 RabbitMQ(三):Exchange交换器--fanout ...

  3. amqp协议_AMQP协议、模型及RabbitMQ常用组件

    大家好,我是小T 今天咱们来介绍RabbitMQ的消息发送的原理 ^-^ RabbitMQ作为一款消息中间件,它的核心功能主要是消息的收发.消息收发的媒介是通过网络传输来实现的. RabbitMQ最底 ...

  4. rabbitmq 同步策略_RabbitMQ(三):消息持久化策略

    一.前言 在正常的服务器运行过程中,时常会面临服务器宕机重启的情况,那么我们的消息此时会如何呢?很不幸的事情就是,我们的消息可能会消失,这肯定不是我们希望见到的结果.所以我们希望AMQP服务器崩溃了也 ...

  5. RabbitMQ 延迟消息的极限是多少?

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 之前在写Spring Cloud Stream专题内容的时候,特地介绍了一下如何使用Rabb ...

  6. 用户请求队列化_爬虫架构消息队列应用场景及ActiveMQ、RabbitMQ、RocketMQKafka

    前言:在之前的业务中,使用了Kafka和RabbitMQ两种消息队列,这篇文章来做一个总结. 消息队列中间件是分布式系统中重要的组件,主要实现异步消息,应用解耦,流量削峰及消息通讯等功能. 下面举例说 ...

  7. 【学习笔记】rabbitmq设置队列ttl和使用延迟插件的代码示例

    文章目录 设置队列ttl 配置文件 生产者 消费者 设置消息ttl 延迟插件的使用 修改配置文件 修改生产者 修改消费者 设置队列ttl 代码架构: 创建两个队列QA和QB,两者队列TTL分别设置为1 ...

  8. RabbitMQ(六):回调队列callback queue、关联标识correlation id、实现简单的RPC系统

    博客翻译自:RabbitMQ Tutorials Java版 RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 ...

  9. RabbitMQ(五):Exchange交换器--topic

    内容翻译自:RabbitMQ Tutorials Java版 RabbitMQ(一):Hello World程序 RabbitMQ(二):Work Queues.循环分发.消息确认.持久化.公平分发 ...

最新文章

  1. Linux的nm查看动态和静态库中的符号
  2. G - 数据结构实验之查找七:线性之哈希表
  3. vsftp 无法启动,500 OOPS: bad bool value in config file for: anonymous_enable
  4. Scrapy爬虫进阶操作之CrawlSpider(一)
  5. ITIL 4讲解:ITIL4的设计框架解析
  6. SQLSERVER 查询分析器快捷键
  7. 汉王考勤系统服务器IP,汉王人脸识别考勤客户端使用说明
  8. [leetcode题解] 第995题Minimum Number of K Consecutive Bit Flips
  9. SAP中会计凭证红蓝冲相关分析测试笔记续(手工反记账红冲)
  10. w锋ndows用户组设置,第2章Wndows+Server+2008本地用户和组.ppt
  11. 关于Big-O表示法
  12. 55 个 Linux 练手项目合集,打通你的 Linux 任督二脉 !
  13. **视频会议设备连接注意事项**
  14. 弹性ip是可以加入共享带宽?
  15. Kubernetes基础:MacOS上设定Dashboard
  16. 计算机基础知识竞赛ppt,计算机基础知识竞赛.doc
  17. 电压(主要介绍和计算方法)
  18. js中的for in循环
  19. linux命令ls -rlt,如何使用BPF将SSH会话转换为结构化事件
  20. Flexsim案例分析2

热门文章

  1. c语言标准函数库怎么建立教程,C语言入门教程-创建一个函数库
  2. ffmpeg 2.6.3在Windows系统MinGW的编译
  3. mysql数据库主主_MySQL主主复制(图文详解)
  4. 95-860-040-源码-定时器-SystemProcessingTimeService简介
  5. 【Elasticsearch】es 插入数据 性能优化 以及 影响插入的因素
  6. 【ElasticSearch】Es 源码之 CcrRestoreSourceService 源码解读
  7. 60-100-022-使用-MySQL 开启全局查询日志
  8. 1.1.0-简介-P11-分布式锁的解决方案
  9. 【MySQL】Java.sql.SQLException Incorrect string value: \xF0\x9F\x98\x8D\xE8\xBE...
  10. 【SpringBoot】SpringBoot之Bean之自动加载