1、对消息的理解

  消息即为数据(data),数据有一定的规则、长度、大小。

  Java Message Service(Java消息服务)简称JMS,为Java 程序提供一种通用的方式,来创建、发送、接收以及读取企业消息系统的消息。

  标准JMS(JSR914):https://www.jcp.org/en/jsr/detail?id=914 

  JMS 元素:

  1、Provider提供方:服务提供者

  2、Producer生产者:创建和发送JMS消息的客户端

  3、Consumer消费者:接收JMS消息的客户端

  4、Client客户端:生产或消费消息的应用&进程

  5、Message消息:服务端与客户端之间的传输数据对象

  6、Queue队列 :包含待读取消息的准备区域(点对点)

  7、Topic主题:发布消息的分布机制(发布&订阅)

  JMS提供五种消息主体:

  1、BytesMessage(字节)

  2、StreamMessage(流)

  3、TextMessage(文本、字符串)

  4、MapMessage(属性集合)

  5、ObjectMessage(对象)

2、对中间件的理解

  中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯,为我们提供发送消息的程序或者服务。

  主流消息中间件有:

  1、ActiveMq(严格jms jsr914)

  2、RabbitMq

  3、RocketMq

  4、Kafka

  .....等多种不常是在开发中使用的消息中间件。

3、为什么要用消息中间件

  最重要的带来异步以及系统之间的解耦。

  未使用MQ的系统之间调用情况图:

  

  使用MQ的系统之间调用情况图:带来了异步(提高订单系统的性能),系统进行了解耦

  

4、什么是RocketMq

  由国内阿里开源 java语言写的。贡献给apache ,作为apache 的维护开发。简称Rmq并没有严格遵循jms规范(参考)。本身电商背景有关。

  RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件,由java进行开发。

5、为什么选择RocketMq

  1、稳定无单点故障 不会因为某台机器或者某个节点宕机而影响系统正常使用

  2、 集群功能完善

  3、经历过双十一

  4、Java语言实现

  5、架构轻、源码可读性好

  7、生态圈完善,配套好

  8、开源社区活跃

6、RocketMq的标准术语

  Producer

  消息生产者,生产者的作用就是将消息发送到 MQ,生产者本身既可以产生消息,如读取文本信息等。也可以对外提供接口,由外部应用来调用接口,再由生产者将收到的消息发送到 MQ。

  Producer Group

  生产者组,简单来说就是多个发送同一类消息的生产者称之为一个生产者组。在这里可以不用关心,只要知道有这么一个概念即可。

  Consumer

  消息消费者,简单来说,消费 MQ 上的消息的应用程序就是消费者,至于消息是否进行逻辑处理,还是直接存储到数据库等取决于业务需要。

  Consumer Group

  消费者组,和生产者类似,消费同一类消息的多个 consumer 实例组成一个消费者组。

  Topic

  Topic 是一种消息的逻辑分类,比如说你有订单类的消息,也有库存类的消息,那么就需要进行分类,一个是订单 Topic 存放订单相关的消息,一个是库存 Topic 存储库存相关的消息。

  Message

  Message 是消息的载体。一个 Message 必须指定 topic,相当于寄信的地址。Message 还有一个可选的 tag 设置,以便消费端可以基于 tag 进行过滤消息。也可以添加额外的键值对,例如你需要一个业务 key 来查找 broker 上的消息,方便在开发过程中诊断问题。

  Tag

  标签可以被认为是对 Topic 进一步细化。一般在相同业务模块中通过引入标签来标记不同用途的消息。

  Broker

  Broker 是 RocketMQ 系统的主要角色,其实就是前面一直说的 MQ。Broker 接收来自生产者的消息,储存以及为消费者拉取消息的请求做好准备。

  Name Server

  Name Server 为 producer 和 consumer 提供路由信息。

7、RocketMq官方文档

http://rocketmq.apache.org/docs/simple-example

RocketMq(一)初识消息中间件的更多相关文章

  1. Kafka、RabbitMQ、RocketMQ、ActiveMQ消息中间件的对比--多年生产经验实践总结

    引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注. ...

  2. 初识消息中间件之 ==> ActiveMQ

    一.消息队列概述 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象. 消息队列(Message Queue)是一种应用间的通信方式, ...

  3. 消息中间件与JMS标准

    初识消息中间件 维基百科上对于消息中间件的定义是"Message-oriented middleware(MOM) is software infrastructure focused on ...

  4. RocketMQ从3.5.8升级到4.3.2版本实战记录

    背景 我们在很早之前大约在2015年8月份左右我们开始使用Rocketmq作为公司消息中间件,那个时候RocketMQ还没有捐赠给Acaphe. RocketMQ版本还是3.2.6,中间升级了一次版本 ...

  5. RocketMQ学习分享

    消息队列的流派 什么是 MQ Message Queue(MQ),消息队列中间件.很多人都说:MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是——MQ 是异步的,用来解耦的 ...

  6. RocketMQ 消息队列单机部署及使用

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51086876 相关文章: <RocketMQ 消息队列单机部署及使用> ...

  7. RocketMQ事务性消息及持久化

    TransactionProducer(事务消息): 在分布式系统中,我们时常会遇到分布式事务的问题,除了常规的解决方案之外,我们还可以利用RocketMQ的事务性消息来解决分布式事务的问题.Rock ...

  8. rocketmq单点部署

    下载地址:https://github.com/alibaba/RocketMQ 转载请注明来源:http://blog.csdn.net/loongshawn/article/details/510 ...

  9. Spring Boot2.X整合消息中间件RabbitMQ原理简浅探析

    目录 1.简单概述RabbitMQ重要作用 2.简单概述RabbitMQ重要概念 3.Spring Boot整合RabbitMQ 前言 RabbitMQ是一个消息队列,主要是用来实现应用程序的异步和解 ...

随机推荐

  1. 实现1sym转换成2个sym送给CVI(VGA数据)

    CVI的时序如下 :de指示数据有效. 从下面的程序看,同步码的长度不会影响对有效数据的判断.同步码的作用更多的是用于计算行及一行的像素数目.方案一: 1 module vga_1sym_2_2sym ...

  2. CentOS 5.5 防火墙开启、关闭以及开放指定端口

    之前有讲过公司新买的服务器使用的是CentOS5.5, 部署好Tomcat之后却发现输入114.80.*.*:8080(即ip:8080)却无法显示Tomcat默认的首页. 因为以前部署在Win Se ...

  3. Hdu2841 Visible Trees 2017-06-27 22:13 24人阅读 评论(0) 收藏

    Visible Trees Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  4. hihocode 1336 Matrix Sum 【二维树状数组】

    题目 两个操作: 1. Add x y value: Add value to the element Axy. (Subscripts starts from 0 2. Sum x1 y1 x2 y ...

  5. hdu 2838 Cow Sorting (树状数组+逆序对)

    题目 题意:给你N个排列不规则的数,任务是把它从小到大排好,每次只能交换相邻两个数,交换一次的代价为两数之和,求最小代价 拿到这道题,我根本看不出这道题和树状数组有半毛钱关系,博客之,全说用树状数组做 ...

  6. 《mysql必知必会》学习_第12章_20180801_欢

    第12章:汇总数据 P76 avg()函数求平均值 select avg(prod_price) as avg_price from products; #计算prod_price的平均值,并且命名为 ...

  7. uniGUI for C++ builder之杂七杂八小知识

    uniGUI for C++ builder之杂七杂八小知识 2018年09月30日 22:16:05 中国银行之路在脚下 阅读数:41 标签: uniguibuilder 更多 个人分类: C++ ...

  8. easyUi DataGrid 显示日期列,时间为空也可,的正常显示,及普通居中列情况

    $('#tt').datagrid({                url: '@Url.Content("~/kpi/FindList")',                w ...

  9. Network in Network 2

    <Network in Network>论文笔记 1.综述 这篇文章有两个很重要的观点: 1×1卷积的使用 文中提出使用mlpconv网络层替代传统的convolution层.mlp层实际 ...

  10. Sql Server中的表访问方式Table Scan, Index Scan, Index Seek

    1.oracle中的表访问方式 在oracle中有表访问方式的说法,访问表中的数据主要通过三种方式进行访问: 全表扫描(full table scan),直接访问数据页,查找满足条件的数据 通过row ...