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)。

队列和交换机的绑定方式:代码、配置文件、管理界面。

时间: 2024-10-07 19:36:33

RabbitMQ小结的相关文章

【SpringBoot MQ 系列】RabbitMq 核心知识点小结

[MQ 系列]RabbitMq 核心知识点小结 以下内容,部分取材于官方教程,部分来源网络博主的分享,如有兴趣了解更多详细的知识点,可以在本文最后的文章列表中获取原地址 RabbitMQ 是一个基于 AMQP 协议实现的企业级消息系统,想要顺畅的玩耍的前提是得先了解它,本文将主要介绍 rabbitmq 的一些基本知识点 特点 基本概念 消息投递消费的几种姿势 事务 集群 I. 基本知识点 它是采用 Erlang 语言实现的 AMQP(Advanced Message Queued Protoco

封装 RabbitMQ.NET

这篇文章内容会很短,主要是想给大家分享下我最近在做一个简单的rabbitmq客户端类库的封装的经验总结,说是简单其实一点都不简单.为了节省时间我主要按照Library的执行顺序来介绍,在你看来这里仅仅是一个简单的经验总结,但是在我看来这些经验只有在你真正的封装rabbitmq客户端库的时候且将你的客户端安全稳定的发布上线后才会真的发现这些问题. 比如你的库只是链接单个Node的时候和链接高可用集群的HAProxy时候是完全两回事.当你未能在你的库里使用反向注入LOG接口的时候一旦在线上发生网络解

rabbitmq网络框架剖析

Rabbitmq是一个MQ系统,也就是消息中间件,它实现了AMQP 0.8规范,简单来说就是一个TCP的广播服务器.AMQP协议,你可以类比JMS,不过JMS仅仅是java领域内的API规范,而AMQP比JMS更进一步,它有自己的wire-level protocol,有一套可编程的协议,中立于语言.简单介绍了Rabbitmq之后,进入正题. Rabbitmq充分利用了Erlang的分布式.高可靠性.并发等特性,首先看它的一个结构图: 这张图展现了Rabbitmq的主要组件和组件之间的关系,具体

rabbitmq框架分析

最近项目可能需要用到rabbitmq作为中间件,负责消息转发消息队列的理解:异步去发送一些消息,这些消息都会存到一个队列里面,进行顺序处理,但是对于客户来说,他并不需要等待这个处理过程,他可以去做其他的事情,等到消息队列里面处理到该客户的消息的时候,才会给客户返回相关的回应.适用场景:例如,某个网站的登录,需要验证码,当我们给网站服务器发送验证请求时,就会加入该网站的验证的消息队列里面,当然这个队列里面有很多客户的请求,队列会迅速进行处理,各个客户不需要一直在等待,我们可以做其他事情,等消息队列

RabbitMQ访问控制

Access Control (Authentication, Authorisation) in RabbitMQ 认证和授权这两个概念经常容易被混淆,甚至被互换使用.在RabbitMQ中这是错的,它们是两个独立的概念.可以简单的这样理解,认证就是"识别这个用户是谁",而授权就是"决定哪些用户不能这么做". Default Virtual Host and User 当服务器第一次启动运行的时候,并且检测到它的数据库没有被初始化或者已经被删除了,那么它将用下面这样

RabbitMq基础教程之基本概念

RabbitMq基础教程之基本概念 RabbitMQ是一个消息队列,和Kafka以及阿里的ActiveMQ从属性来讲,干的都是一回事.消息队列的主要目的实现消息的生产者和消费者之间的解耦,支持多应用之间的异步协调工作 由于工作原因,接触和使用rabbitmq作为生产环境下的消息队列,因此准备写一些博文,记录下这个过程中的收货:而开篇除了环境搭建之外,就是对于其内部的基本概念进行熟悉和了解了. 基础环境搭建可以参考: <RabbitMq基础教程之安装与测试> 本文则主要集中在以下几点: 几个基本

RabbitMQ消息中间件技术精讲

RabbitMQ核心API+高级特性+Spring家族整合+高可靠集群+SET化架构设计+组件设计思路 神秘数字-->求求 号:->:2304636824 第1章 课程介绍 本章首先让大家彻底明白为什么学习RabbitMQ,通过本课程的学习具体收获有哪些?课程内容具体安排与学习建议,然后为大家简单介绍下业界主流消息中间件有哪些,各自适用场景等. 1-1 课程导学 1-2 业界主流消息中间件介绍 第2章 低门槛,入门RabbitMQ核心概念 本章首先为大家讲解互联网大厂为什么选择RabbitMQ

慕课网RabbitMQ消息中间件技术精讲

第1章 课程介绍本章首先让大家彻底明白为什么学习RabbitMQ,通过本课程的学习具体收获有哪些?课程内容具体安排与学习建议,然后为大家简单介绍下业界主流消息中间件有哪些,各自适用场景等. 1-1 课程导学1-2 业界主流消息中间件介绍第2章 低门槛,入门RabbitMQ核心概念本章首先为大家讲解互联网大厂为什么选择RabbitMQ? RabbitMQ的高性能之道是如何做到的?什么是AMPQ高级协议?AMPQ核心概念是什么?RabbitMQ整体架构模型是什么样子的?RabbitMQ消息是如何流转

Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka

一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ 二.消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景.异步处理,应用解耦,流量削锋和消息通讯四个场景. 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信.传统的做法有两种 1.串行的方式:2.并行方式 a.串行