开源客户端访问阿里云 RocketMQ 说明
开源客户端访问阿里云RocketMQ说明#
1 目标#
2 开源Java客户端上云#
已经使用开源Java SDK进行生产的用户,只要参考一下方法,重新配置一下参数,即可实现无缝上云。
2.1 客户端版本#
从RocketMQ4.5.1版本开始,开源版本支持链接阿里云MQ。 下载地址:http://rocketmq.apache.org/release_notes/release-notes-4.5.1/
2.2. 资源准备#
控制台获取已创建的资源包括Topic、GroupID,Endpoint,还有AK SK
2.3. 关键接口介绍#
- AccessChannel
阿里云AliMQ和开源的RocketMQ默认使用的鉴权通道不同 本地自建使用:AccessChannel:LOCAL 上云连接AliMQ设置:AccessChannel:CLOUD
- EndPoint
阿里云AliMQ使用接入点用来做nameserver的负载均衡并屏蔽了的具体IP地址,并且针对实例化用户通过在接入点前加入实例ID用于区分,因此要接入阿里云直接使用接入点即可。
- ACL
阿里云提供一套完整的鉴权控制,开源版本的SDK提供了ACL功能,能够兼容阿里云的鉴权算法,这里只要配置正确的ak,sk既可以实现互联互通。
2.4 POM 依赖#
2.5 参数设置部分代码示例#
Producer
Consumer
2.6 Demo#
参考官网提供的example示例:https://github.com/apache/rocketmq/tree/master/example/src/main/java/org/apache/rocketmq/example
3 开源CPP客户端上云#
开源的客户端连接 阿里云AliMQ,需要重新修改部分配置信息即可,使用方式和默认配置保持兼容。
3.1. 客户端版本#
从rocketmq-clienr-cpp 1.2.2版本开始,开源版本支持链接阿里云MQ。 下载地址:https://github.com/apache/rocketmq-client-cpp/releases/tag/1.2.2
3.2. 资源准备#
控制台获取已创建的资源,Topic、GroupID,Endpoint,用户AK,SK,实例化用户还包括实例名InstanceID。
3. 3. 支持的平台#
linux:centos6.X, centos7.X, REHL6x, REHL7X darwin: macOS Mojave 10.14.X windows: win10
3.4. 关键接口参数介绍#
- SessionCredentials
CPP客户端提供了访问阿里云默认的鉴权方式,
- EndPoint
阿里云AliMQ将访问的name server地址以接入点的方式提供
NameServer Address设置为控制台上获取的endpoint地址
- GroupID(ProducerID/ConsumerID)
由于阿里云AliMQ将原来的ProducerID和ConsumerID合并,统一称作GroupID,开源客户端除了在Producer和Consumer实例化的时候,在构造函数里可以指定GID/PID/CID外,额外提供了设置GID的接口。
针对实例化用户整理还需要将GID重新拼接一下格式InstanceID%GID,参考实例代码。 注意,此接口调用必须在实例start之前。
- Topic
对于新用户,需要在控制台创建topic,对于需要迁移的用户,在控制台上创建相同的topic即可,这里不用修改,如果是申请的实例化用户,这里需要把实例ID拼接上,格式为InstanceID%Topic
3.5. 参数设置核心部分代码示例#
访问阿里云需要使用阿里云的鉴权方式和接入点,下面针对非实例化用户和实例化用户,分别列出需要修改的配置信息,其余的配置和开源RocketMQ的使用完全兼容。
- 公网默认实例(非实例化)
Producer
Consumer
- 实例化用户
由于实例化给用户提供了自己的命名空间,用于逻辑资源隔离,所以使用开源客户端访问时,需要显式的设置实例ID,即InstanceId,从控制台获取,格式为MQ_INST_XXXXX_XXXX
Producer
Consumer
3.6. Demo#
StepByStep使用方法,参考:https://github.com/apache/rocketmq-client-cpp/blob/master/README.md
4 开源Python客户端上云#
开源的客户端连接 阿里云AliMQ,需要重新修改部分配置信息即可,使用方式和默认配置保持兼容。
4.1. 客户端版本#
由于从rocketmq-client-cpp 1.2.2版本开始,开源版本支持链接阿里云MQ。因此Python客户端将CPP动态库依赖升级至1.2.2后,也可以无缝上云。 CPP SDK下载地址:https://github.com/apache/rocketmq-client-cpp/releases/tag/1.2.2
4.2. 资源准备#
控制台获取已创建的资源,Topic、GroupID,Endpoint,用户AK,SK,实例化用户还包括实例名InstanceID。
4.3. 支持的平台#
linux:centos6.X, centos7.X, REHL6x, REHL7X darwin: macOS Mojave 10.14.X
4.4. 关键接口参数介绍#
- SessionCredentials
Python客户端提供了访问阿里云默认的鉴权方式,
- EndPoint
阿里云AliMQ将访问的name server地址以接入点的方式提供
NameServer Address设置为控制台上获取的endpoint地址
- GroupID(ProducerID/ConsumerID)
由于阿里云AliMQ将原来的ProducerID和ConsumerID合并,统一称作GroupID,开源客户端除了在Producer和Consumer实例化的时候,在构造函数里可以指定GID/PID/CID外,不再额外提供了设置GID的接口。 针对实例化用户整理还需要将GID重新拼接一下格式InstanceID%GID,参考实例代码。
- Topic
对于新用户,需要在控制台创建topic,对于需要迁移的用户,在控制台上创建相同的topic即可,这里不用修改,如果是申请的实例化用户,这里需要把实例ID拼接上,格式为InstanceID%Topic
4.5. 参数设置核心部分代码示例#
访问阿里云需要使用阿里云的鉴权方式和接入点,下面针对非实例化用户和实例化用户,分别列出需要修改的配置信息,其余的配置和开源RocketMQ的使用完全兼容。
公网默认实例(非实例化)
Producer
Consumer
- 实例化用户
由于实例化给用户提供了自己的命名空间,用于逻辑资源隔离,所以使用开源客户端访问时,需要显式的设置实例ID,即InstanceId,从控制台获取,格式为MQ_INST_XXXXX_XXXX
Producer
Consumer
4.6. Demo#
StepByStep使用方法,参考:https://github.com/apache/rocketmq-client-python/blob/master/doc/Introduction.md
5 RocketMQ Spring上云#
5.1. 版本#
RocketMQ Spring版本:2.0.3 RocketMQ客户端:4.5.1。 下载地址:https://github.com/apache/rocketmq-spring/releases/tag/rocketmq-spring-all-2.0.3
5.2. 资源准备#
控制台获取已创建的资源,Topic、GroupID,Endpoint,用户AK,SK,实例化用户还包括实例名InstanceID。
5.3 Pom 依赖#
5.4. 参数设置#
参考开源Java客户端测设置,使用spring链接上云需要同样设置部分ACL参数和接入点。打开application.properties文件,修改参数即可
Producer
Consumer
5.5. Demo#
StepByStep使用方法,参考:https://github.com/apache/rocketmq-spring
6. 开源Go客户端上云#
开源的Go客户端使用cgo封装CPP SDK连接 阿里云AliMQ,因此只需要更新CPP动态库版本和重新修改部分配置信息即可,使用方式和默认配置保持兼容
6.1. 客户端版本#
由于从rocketmq-client-cpp 1.2.2版本开始,开源版本支持链接阿里云MQ。因此Go客户端将CPP动态库依赖升级至1.2.2后,也可以无缝上云。 CPP SDK下载地址:https://github.com/apache/rocketmq-client-cpp/releases/tag/1.2.2
6.2. 资源准备#
控制台获取已创建的资源,Topic、GroupID,Endpoint,用户AK,SK,实例化用户还包括实例名InstanceID。
6.3. 支持的平台#
linux:centos6.X, centos7.X, REHL6x, REHL7X darwin: macOS Mojave 10.14.X
6.4. 参数设置核心部分代码示例#
访问阿里云需要使用阿里云的鉴权方式和接入点,下面针对非实例化用户和实例化用户,分别列出需要修改的配置信息,其余的配置和开源RocketMQ的使用完全兼容。
- 公网默认实例(非实例化)
Producer
Consumer
- 实例化用户
由于实例化给用户提供了自己的命名空间,用于逻辑资源隔离,所以使用开源客户端访问时,需要显式的设置实例ID,即InstanceId,从控制台获取,格式为MQ_INST_XXXXX_XXXX
Producer
Consumer
6.6. Demo#
StepByStep使用方法,参考:https://github.com/apache/rocketmq-client-go/blob/master/doc/Introduction.md