目录:

  • 什么是消息中间件
  • 消息中间件的作用
  • 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.gitrabbitmqhelloWorld

RabbitMQ学习笔记(一、消息中间件基础)的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  3. RabbitMQ学习笔记(五) Topic

    更多的问题 Direct Exchange帮助我们解决了分类发布与订阅消息的问题,但是Direct Exchange的问题是,它所使用的routingKey是一个简单字符串,这决定了它只能按照一个条件 ...

  4. 卷积神经网络(CNN)学习笔记1:基础入门

    卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Vie ...

  5. RabbitMQ学习笔记1-hello world

    安装过程略过,一搜一大把. rabbitmq管理控制台:http://localhost:15672/   默认账户:guest/guest RabbitMQ默认监听端口:5672 JAVA API地 ...

  6. (转) Rabbitmq学习笔记

    详见原文: http://blog.csdn.net/shatty/article/details/9529463 Rabbitmq学习笔记

  7. 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群

    在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...

  8. 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ

    鉴于目前中文的RabbitMQ教程很缺,本博主虽然买了一本rabbitMQ的书,遗憾的是该书的代码用的不是java语言,看起来也有些不爽,且网友们不同人学习所写不同,本博主看的有些地方不太理想,为此本 ...

  9. RabbitMQ学习笔记五:RabbitMQ之优先级消息队列

    RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...

  10. 「学习笔记」字符串基础:Hash,KMP与Trie

    「学习笔记」字符串基础:Hash,KMP与Trie 点击查看目录 目录 「学习笔记」字符串基础:Hash,KMP与Trie Hash 算法 代码 KMP 算法 前置知识:\(\text{Border} ...

随机推荐

  1. 【论文阅读】Second-order Attention Network for Single Image Super-Resolution

    概要 近年来,深度卷积神经网络(CNNs)在单一图像超分辨率(SISR)中进行了广泛的探索,并获得了卓越的性能.但是,大多数现有的基于CNN的SISR方法主要聚焦于更宽或更深的体系结构设计上,而忽略了 ...

  2. 201871010116-祁英红《面向对象程序设计(java)》第十三周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://ww ...

  3. 201871010128-杨丽霞《面向对象程序设计(java)》第一周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第一周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...

  4. cf之kmp匹配稍稍改一改

    看样例就知道要干嘛了 http://codeforces.com/contest/1200/problem/E 每次我们用新的串和答案串匹配,答案串的匹配位置是max(0,(int)ans.size( ...

  5. AcWing 801. 二进制中1的个数

    网址 https://www.acwing.com/solution/AcWing/content/2066/ 题目描述给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数. 算法1主要 ...

  6. webdriver浏览器版本驱动对应以及下载

    对于webdriver和各个浏览器的版本的对应,我最近发现浏览器驱动的对应在selenium库的源码里都有提及,路径是:python>site-packages>selenium>w ...

  7. JDBC数据库连接(二)

    要想在编程语言中操作数据库,就必须与数据库建立连接. 建立JDBC连接的步骤如下: 导入JDBC包:使用Java语言的import语句在Java代码开头位置导入所需的类. 注册JDBC驱动程序:使JV ...

  8. PKUWC/SC 做题笔记

    去年不知道干了些啥,什么省选/营题都没做. 现在赶应该还来得及(?) 「PKUWC2018」Minimax Done 2019.12.04 9:38:55 线段树合并船新玩法??? \(O(n^2)\ ...

  9. php time() 和 $_SERVER['REQUEST_TIME']

    time() 和 $_SERVER['REQUEST_TIME']效率 结果:(其中之一) 结论: time() : 执行时间在0.10 - 0.30 之间 $_SERVER['REQUEST_TIM ...

  10. 分词 | 双向匹配中文分词算法python实现

    本次实验内容是基于词典的双向匹配算法的中文分词算法的实现.使用正向和反向最大匹配算法对给定句子进行分词,对得到的结果进行比较,从而决定正确的分词方法. 算法描述正向最大匹配算法先设定扫描的窗口大小ma ...