RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:

1.能够保证严格的消息顺序 2.提供丰富的消息拉取模式 3.高效的订阅者水平扩展能力 4.实时的消息订阅机制 5.亿级消息堆积能力

RocketMQ网络部署

1、NameServer是一个几乎无状态的节点,可集群部署,一般用zookeeper实现,用于管理分布式Topic信息

NameServer维护信息示例:
rocketMQ/brokers/myserver
rocketMQ/topics/epftopic4wolf
rocketMQ/topics/epftopic4tiger

2、Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slaver,但是一个Slaver只能对应一个Master,Master与Slaver的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slaver。Master可以部署多个。
每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有的NameServer。

Broker需要配置:
broker.name=myserver
broker.group=99
运行RocketMq的server端程序,可以以war包的形式通过tomcat发布

3、Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer获取Topic路由信息;
并向提供Topic服务的Master建立长连接,且定时向Master发送心跳,把消息发送到Broker,由Broker排队。
Producer完全无状态,可集群部署,运行rocketMq的Client程序。

Producer需要配置:
name=EPFProducer
group=EPF

4、Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息;
并向提供Topic服务的Master、Slaver建立长连接,且定时向Master、Slaver发送心跳。Consumer即可从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。
从Broker获取消息,可以为push和poll两种方式

Consumer需要配置:

name=EPFConsumer
group=EPF
Type=push

Producter编程

Consumer编程

参考资料

http://alibaba.github.io/RocketMQ-docs/document/design/RocketMQ_design.pdf
http://www.uml.org.cn/zjjs/201504011.asp?artid=16152
http://www.uml.org.cn/zjjs/201504021.asp?artid=16162

RocketMQ学习记录的更多相关文章

  1. rocketmq 学习记录-2

    产品选型 我们在进行中间件选型时,一般都是通过下面几点来进行产品选型的: 1.性能 2.功能支持程度 3.开发语言(团队中是否有成员熟悉此中间件的开发语言,市场上此种语言的开发人员是否好招) 4.有多 ...

  2. RocketMq 学习记录

    最近因为工作需求,领导让我安装一下RocketMQ 这里简单记录一下 这里我的操作系统是centos 6.5 64位 我们看一下官网的RocketMQ安装要求 Prerequisite The fol ...

  3. RocketMQ学习笔记(14)----RocketMQ的去重策略

    1. Exactly Only Once (1). 发送消息阶段,不允许发送重复的消息 (2). 消费消息阶段,不允许消费重复的消息. 只有以上两个条件都满足情况下,才能认为消息是“Exactly O ...

  4. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  5. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  6. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  7. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  8. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  9. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

随机推荐

  1. Translate this app.config xml to code? (WCF) z

    http://stackoverflow.com/questions/730693/translate-this-app-config-xml-to-code-wcf <system.servi ...

  2. winform DataGridView控件判断滚动条是否滚动到当前已加载的数据行底部 z

    http://www.zuowenjun.cn/post/2015/05/20/162.html 判断 DataGridView控件滚动条是否滚动到当前已加载的数据行底部,其实方法很简单,就是为Dat ...

  3. 向sqlserver插入二进制数据(比如图片)

    sqlserver插入二进制数据 偶然在sqlteam看到了,真是够绝,这都想得出来,很便捷的一个方式(只适用于SQL SERVER 2005+),代码如下: CREATE TABLE myTable ...

  4. 十步让 WebForm项目 变为 Mvc项目

    1.创建一个项目名为 App_Asp 的 Asp.NET 空 Web 应用程序2.添加全局应用程序类 Global.asax3.富文本打开 Global,修改 Inherits 为 App_Asp_G ...

  5. 项目积累——jQuery

    初始化时为文本框赋值,聚焦后清空内容 $(function(){ $("#buyDate").val("格式:2014-01-01"); $("#bu ...

  6. Java中List转数组,必须带个参数

    public static void main(String[] args) { List<String> lst = new ArrayList(); lst.add("赵云 ...

  7. JAVA的JDBC连接与sql操作

    一.前言 本文主要介绍怎样连接数据库.即JDBC的操作.以MySQL为例子. 前提是首先要将驱动jar包放入对应路径中. 二.过程说明 1.加载jdbc驱动程序 <span style=&quo ...

  8. opencv编程解决warning C4003: “max”宏的实参不足

    忘了把程序出错的代码附上了,运行修改好的程序才发现的.只好把问题的代码大致写一下了: warning C4003: “min”宏的实参不足 error C2589: “(”:“::”右边的非法标记 e ...

  9. git添加文件过滤

    操作流程 touch .gitignore vi .gitignore,添加需要过滤的文件或目录 git commit 出现问题 假如.gitignore里面添加file,而git库中已经存在file ...

  10. html实体字符

    在html中,某些字符时预留的,如小于号(<).大于号(>),浏览器会认为它们是标签:有些字符无法用键盘输入.如果需要正确的显示它们,就需要在html源码中使用字符实体. 字符实体有实体名 ...