RabbitMQ学习笔记(一、消息中间件基础)
目录:
- 什么是消息中间件
- 消息中间件的作用
- JMS规范
- AMQP协议
- RabbitMQ简介
- Hello World
什么是消息中间件:
消息中间件(Message Queue Middleware,简称MQ),它是一个利用高效可靠的传递机制进行与平台无关的数据交流的工具。
目前比较主流的MQ有RabbitMQ、Kafka、RocketMQ、ActiveMQ。

消息中间件的作用:
1、异步(解决不必要的阻塞):MQ允许将一些消息放入到中间件中,但又并不是立即处理它,而是等需要的时候再去消费它。
2、解耦(减低模块之间的耦合度):MQ在处理中插入了一个隐含的、基于数据的接口层;就像家里的电器(如冰箱、烤炉、热水器等),它们并不是直接接在电路上的,而是通过插座达到通电的目的。
3、削峰(峰值任务的平滑处理):在访问量剧增的情况下,应用仍需要发挥作用。
4、冗余(存储、补偿机制):有些情况下,处理数据的过程中可能会失败,导致数据丢失;你可以在操作数据前先持久化一份到MQ中,然后等数据处理完成后再删掉这一数据,这样便规避了数据丢失的风险。
5、分布式消息传递:因为分布式的可用性、可靠性、吞吐量高、响应时间快、跨平台等特性,所以MQ非常适合分布式应用之间的消息传递。
JMS规范:
JMS(Java Message Service)规范,它本质上是一套API,仅适用于Java平台上的消息规范;并且通过标准的生产、发送接口来简化企业的开发。
1、JMS对象模型包含的元素
- 连接工厂:用于创建一个JMS连接
- JMS连接:客户端和服务端之间的连接
- JMS会话:客户端和服务端之间的会话,基于JMS连接
- JMS目的:JMS消息队列,也就是消息的目的地
- JMS生产者:生成消息的对象
- JMS消费者:消费消息的对象
- Broker:MQ的实例
2、JMS消息模型
- Point To Point(点对点):一个消息只有一个消费者能够消费,当消费成功后该条消息就会从MQ中删除。
- Publish/Subscribe(发布/订阅 >>> 一对多):发布到topic的消息会被所有当前主题的订阅者消费。
AMQP协议:
AMQP(Advance Message Queuing Protocol)协议是一套开放的MQ标准,支持不同语言的不同的MQ产品。
AMQP组件:
1、生产、消费者。
2、消息:包括有效载荷与标签;有效载荷:需要传输的数据;标签:描述有效载荷的属性;RabbitMQ通过标签决定谁改获得该消息,而消费者只能得到有效载荷。
3、信道:它是一个虚拟的连接,建立在真实的TCP、IP连接之上,所有的AMQP都通过信道传输消息;因建立TCP、IP连接非常消耗服务器资源,所以才有了信道的出现,它有点像连接池的那种感觉。
4、交换器、队列、绑定、路由键:队列通过路由键绑定到交换器,生产者把消息发送到交换器,交换器再根据绑定的路由键把消息路由到对应的队列中,然后再由订阅该消息的消费者进行消费。

RabbitMQ简介:
RabbitMQ是一款遵循AMQP规范的MQ,其具有消息确认机制、队列消息的持久化、消息拒收机制、默认交换器、mandatory(防丢失机制)。
Hello World:
见https://github.com/mrjdrs/rabbitmq-demo.git的rabbitmqhelloWorld。
RabbitMQ学习笔记(一、消息中间件基础)的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- RabbitMQ学习笔记(五) Topic
更多的问题 Direct Exchange帮助我们解决了分类发布与订阅消息的问题,但是Direct Exchange的问题是,它所使用的routingKey是一个简单字符串,这决定了它只能按照一个条件 ...
- 卷积神经网络(CNN)学习笔记1:基础入门
卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01 | In Machine Learning | 9 Comments | 14935 Vie ...
- RabbitMQ学习笔记1-hello world
安装过程略过,一搜一大把. rabbitmq管理控制台:http://localhost:15672/ 默认账户:guest/guest RabbitMQ默认监听端口:5672 JAVA API地 ...
- (转) Rabbitmq学习笔记
详见原文: http://blog.csdn.net/shatty/article/details/9529463 Rabbitmq学习笔记
- 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群
在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...
- 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ
鉴于目前中文的RabbitMQ教程很缺,本博主虽然买了一本rabbitMQ的书,遗憾的是该书的代码用的不是java语言,看起来也有些不爽,且网友们不同人学习所写不同,本博主看的有些地方不太理想,为此本 ...
- RabbitMQ学习笔记五:RabbitMQ之优先级消息队列
RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...
- 「学习笔记」字符串基础:Hash,KMP与Trie
「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...
随机推荐
- MATLAB实例:为匹配真实标签,对训练得到的标签进行调整
MATLAB实例:为匹配真实标签,对训练得到的标签进行调整 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. MATLAB程序 munkres.m ...
- ClickHouse
ClickHouse 是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告 1 安装前的准备1.1 Cent ...
- Codeforces Round #599 (Div. 1) A. Tile Painting 数论
C. Tile Painting Ujan has been lazy lately, but now has decided to bring his yard to good shape. Fir ...
- Java 异常面试问题与解答
Java 提供了一种健壮且面向对象的方法来处理称为 Java异常处理的异常情况. 1. Java中的异常是什么? 异常是在程序执行期间可能发生的错误事件,它会破坏其正常流程.异常可能源于各种情况,例如 ...
- linux服务器上配置进行kaggle比赛的深度学习tensorflow keras环境详细教程
本文首发于个人博客https://kezunlin.me/post/6b505d27/,欢迎阅读最新内容! full guide tutorial to install and configure d ...
- Oracle - 截取指定日期的alert log
工作中DBA经常会查看alert log来检查数据库后台都记录了些什么日志,如果只想看某一天或者某段时间范围的日志,能够把这些日志从大的alert log中截取下来放到一个单独的文件中,对于查看和下载 ...
- C#如何用IL和Emit类通过Calli来实现实例函数与静态函数的调用
一. 介绍 最近充能看书,在书上看到函数调用可以 " 通过 ldftn 获得函数指针,然后使用 calli 指令 " 来进行调用,并说这种行为 " 类似 C 的函数指针, ...
- 禁止页面被复制和禁止右键,一段样式一段JS就行了,无需复杂设定!
群里小伙伴经常问怎么禁止页面复制和右键,其实这个问题百度一下是很多资料的,我估计小伙伴都懒,所以这里统一回复下: 找到模板里面的</head>,在上面加如下代码就行了 <style ...
- Java生鲜电商平台-商品分类表和商品类型表的区别与数据库设计
Java生鲜电商平台-商品分类表和商品类型表的区别与数据库设计 二者服务的对象不一样 目的也是不一样的 商品分类是为商品服务的 用来管理商品 商品类型是为扩展属性服务的 用来管理属性 举例:[转] ...
- HTTP面试常见题
1.HTTP2.0.1.1.1.0.0.9的区别? 答:HTTP0.9:是HTTP协议的第一个版本,只允许发送get请求,并且不支持请求头.一次请求对应一次响应.是短连接. HTTP1.0:相比于0. ...