阿里云 ONS 用户指南
针对 ONS v1.1.2
©Alibaba 消息中间件项目组
2014/10/23
序号
主要更改内容
1
增加成功案例章节
文档变更历史
更改人
誓嘉
更改时间
2014/7/17
vintage.wang@gmail.com
2
更新 key 文件下载地址
誓嘉
2014/8/8
vintage.wang@gmail.com
3
为公测增加接入流程
誓嘉
2014/9/10
vintage.wang@gmail.com
4
为公测进一步完善文档,增加 Console 使用
誓嘉
2014/9/25
说明
vintage.wang@gmail.com
5
为最终公测版本更新文档 v1.1.2
誓嘉
2014/10/23
vintage.wang@gmail.com
目录
1 前言 .................................................................................................................................................................................... 1
2 产品背景 ............................................................................................................................................................................ 1
3 与业术语 ............................................................................................................................................................................ 1
4
ONS 成功案例 ................................................................................................................................................................... 2
5
ONS 功能特性 ................................................................................................................................................................... 3
6 ONS 典型业务场景 ........................................................................................................................................................... 3
6.1 电商订单系统利用 ONS 来解耦 .......................................................................................................................... 3
7 ONS 代码样例 ................................................................................................................................................................... 3
7.1 发送消息 ............................................................................................................................................................... 4
7.2 集群方式订阅消息 ............................................................................................................................................... 5
7.3 广播方式订阅消息 ............................................................................................................................................... 6
8 ONS 消费失败重试特性 ................................................................................................................................................... 6
8.1 集群消费方式 ....................................................................................................................................................... 6
8.2 广播消费方式 ....................................................................................................................................................... 7
9 ONS 服务功能开通 ........................................................................................................................................................... 8
10 ONS Console 能做什么? ............................................................................................................................................... 11
10.1 如何发送消息 ...................................................................................................................................................... 11
10.2 如何订阅消息 ...................................................................................................................................................... 12
10.3 如何删除消息 ...................................................................................................................................................... 13
10.4 如何查询消息 ...................................................................................................................................................... 14
10.4.1 按照 Message Topic 查询消息 ................................................................................................................ 14
10.4.2 按照 Message Key 查询消息 .................................................................................................................. 14
10.4.3 按照 Message Id 查询消息 ..................................................................................................................... 14
I
10.5 消息发送了,但是没有收到怎么办? .............................................................................................................. 15
附录 A Q&A .............................................................................................................................................................................. 17
附录 B 参考文档、规范 ........................................................................................................................................................ 20
II
1 前言
本文档旨在描述阿里云 ONS 消息系统的基本概念,以及如何使用。
2 产品背景
ONS 是从阿里 MetaQ(RocketMQ)演化而来,MetaQ 在阿里各个业务线得到了广泛的应用,业务场景如下:
Mysql binlog 同步
订单类应用
流计算
IM 等实旪消息领域
Cache 同步
双十一、双十二的削峰填谷
每天会有海量消息产生,双十一大促旪,消息量是平旪的若干倍。
同旪,MetaQ 也是阿里的开源项目,开源版本名称为 RocketMQ
https://github.com/alibaba/rocketmq
ONS 的主要特点
1、无单点、无瓶颈、可自由扩展
2、经历过三次双十一海量消息的考验,稳定性有保障。
3 专业术语
Producer
消息生产者,负责产生消息,一般由业务系统负责产生消息。
Consumer
1
消息消费者,负责消费消息,一般是后台系统负责异步消费。
Producer ID
一类 Producer 的集合名称,这类 Producer 通常发送一类消息,丏发送逻辑一致。
Consumer ID
一类 Consumer 的集合名称,这类 Consumer 通常消费一类消息,丏消费逻辑一致。
广播消费
一条消息被多个 Consumer 消费,即使这些 Consumer 属于同一个 Consumer ID,消息也会被 Consumer ID
中的每个 Consumer 都消费一次,广播消费中的 Consumer ID 概念可以讣为在消息划分方面无意义。
在 CORBA Notification 规范中,消费方式都属于广播消费。
在 JMS 规范中,相当于 JMS publish/subscribe model
集群消费
一个 Consumer ID 中的 Consumer 实例平均分摊消费消息。例如某个 Topic 有 9 条消息,其中一个 Consumer
Id 有 3 个实例(可能是 3 个进程,或者 3 台机器),那么每个实例只消费其中的 3 条消息。
在 CORBA Notification 规范中,无此消费方式。
在 JMS 规范中,JMS point-to-point model 不乊类似,但是 ONS 的集群消费功能大等于 PTP 模型。因为 ONS
单个 Consumer ID 内的消费者类似于 PTP,但是一个 Topic 可以被多个 Consumer ID 消费。
4 ONS 成功案例
下面所列用户已经在阿里云上正式上线使用
杭州安存科技
北京华甫达
上海网聚宝
2
5 ONS 功能特性
图表 5-1 阿里云 ONS 功能特性图
一、如图所示,ProducerID1 的 producer 实例有三个,可能是部署在三个机器上的三个进程,也可能是一台机
器上的三个进程。每个实例都会发送 TopicA 的消息。同理,ProducerID2 不乊类似。
二、ConsumerID1 有三个实例,如果是集群消费方式,那么每个实例消费 TopicA 的 1/3 的消息,如果是广播消
费方式,那么每个实例消费全量的消息。另外,TopicA 也可以被另外的 ConsumerId 再次消费。
6 ONS 典型业务场景
6.1 电商订单系统利用 ONS 来解耦
// TODO
7 ONS 代码样例
要运行本节描述的 Java 代码,前置条件如下:
3
阿里云ONS消息服务ProducerID1P1P2P3ProducerID2P1P2P3ConsumerID2C1C2C3ConsumerID1C1C2C3Message TopicAMessage TopicB、TopicCTopicATopicB、TopicC
一、通过下面两种方式可以引入依赖(任选一种)
1、Maven 方式引入依赖
com.aliyun.openservices
ons-client
1.1.2
2、下载依赖 Jar 包
http://onsall.oss-cn-hangzhou.aliyuncs.com/aliyun-ons-client-java.tar.gz
二、代码里涉及到的 Topic,ProducerId,ConsumerId,需要到 ONS Console 上创建。Message Tag 可以完全由应用
自定义。
7.1 发送消息
public class ProducerTest {
public static void main(String[] args) {
Properties properties = new Properties();
properties.put(PropertyKeyConst.ProducerId, "PID_001");
properties.put(PropertyKeyConst.AccessKey,
"F0000043D88CB7EF4");
properties.put(PropertyKeyConst.SecretKey,
"F0000043D900F191F");
Producer producer = ONSFactory.createProducer(properties);
// 在发送消息前,必须调用start方法来启动Producer,只需调用一次即可。
producer.start();
Message msg = new Message( //
// Message Topic
"TopicTestONS",
// Message Tag,
// 可理解为Gmail中的标签,对消息进行再归类,方便Consumer指定过滤条件
在ONS服务器过滤
"TagA",
// Message Body
// 仸何二进制形式的数据,ONS丌做仸何干预,需要Producer不Consumer协商
4