环境准备
本 Demo 主要目的在于帮助初次接触 Aliware MQ 的工程师,一步一步搭建 MQ 测试工程。Demo 程序以 Java 为例,包括普通消息、事务消息、定时消息的测试代码,以及相关 Spring 的配置示例。
安装 IDE
本文以 IDEA 为例。您可以使用 IDEA 或者 Eclipse。
- 在https://www.jetbrains.com/idea/ 下载 IDEA。请下载 Ultimate 版本。
- 执行 IDEA 安装包,安装 IDEA。
- 选择 License server 激活方式,填入 License server address(填入合法地址),例如 http://idea.iteblog.com/key.php (仅做参考)。
- 单击 Discover server。
- 单击最下方激活按钮,激活成功。
安装 Git
请按以下步骤操作:
- 在 Git 官网下载安装包,双击进行安装。
- 访问官网 https://github.com/ 注册 GitHub 账号。
- 生成 GitHub 秘钥,在本机命令行里输入 ssh-keygen -t rsa -C "xxxx@163.com"(您注册 GitHub 的邮箱),使用默认值回车2次。
- 执行以下命令:
cd ~/.ssh/
cat id_rsa.pub
- 把 cat 的内容,即 GitHub 公钥整体复制下来。
- 登录 GitHub 官网,单击 Settings,在左侧菜单选择 SSH and GPG keys。
-
单击页面右上角 New SSH key,输入相关信息后单击 Add SSH key 保存。
- Title: 可以自定义填写
- Key: 将刚才复制的 GitHub 公钥粘贴在此处
下载 MQ Demo 工程
通过 Git 下载 MQ Demo 工程到本地。执行以下命令:
cd xxxxx(此处为保存工程的本地路径)
git clone git@github.com:lollipopjin/Aliware-MQ-demo.git
下载完成后即可看到本地新增了 Aliware-MQ-demo 文件夹,此文件夹里面为 Demo工程。
Demo 工程配置
Demo 工程设置包含以下几个步骤。
MQ Demo工程文件导入 IDEA
注意:如果本地未安装 JDK,请先下载安装。
- 双击 IDEA 图标打开 IDEA。
- 选择 Import Project,选择 MQ Demo 文件夹。
- 选择 Import 类型。
- 默认单击 Next,直到导入完成。Demo 工程需要加载依赖的 Jar 包,因此导入过程需要等待2-3分钟。
申请 MQ 资源(全免费)
请在 MQ 控制台创建 Topic、发布组 Producer ID(PID)、订阅组 Consumer ID (CID)。公网测试 Region 免 Topic 占用费,前2000万次调用免费。
- 进入 Aliware MQ 产品首页:https://www.aliyun.com/product/ons/
- 单击免费开通,进入管理控制台。
- 选择公网测试 域(默认),单击右侧发布 Topic,输入 Topic 名称(尽量个性化避免重复),单击确定。
- 创建发布组 PID。在 Topic 管理列表中单击申请发布。
- 创建订阅组 CID。在 Topic 管理列表中单击申请订阅。
详细信息请参考申请 MQ 资源。
配置 MQ Demo
需要配置3个文件:MqConfig 类,producer.xml,consumer.xml。
-
配置 MqConfig 类。
- public static final String TOPIC = "刚才创建的Topic";
- public static final String PRODUCER_ID = "刚才创建的PID";
- public static final String CONSUMER_ID = "刚才创建的CID";
- public static final String ACCESS_KEY = "您的阿里云账号的AK";
- public static final String SECRET_KEY = "您的阿里云账号的SK";
AK SK 获取:请登录阿里云账号,点击 AccessKeys。AK 即 Access Key ID,SK 即 Access Key Secret。
说明:主账号创建 Topic 后,如果在 MQ 控制台的 Topic 管理列表里对子账号进行了授权,那么也可以使用 RAM 子账号的 AK SK。
- 配置 producer.xml。
- 配置 consumer.xml。
运行 Demo
以 Main 方式启动收发消息
- 运行 SimpleMQProducer 类发送消息。
- 登录 MQ 控制台,在左侧菜单栏选择消息查询>Topic 查询,选择 Topic 名称进行查询。可以看见消息已经发送至 Topic。
- 运行 SimpleMQConsumer 类接收消息。可以看到消息被接收打印的日志。因为有初始化,所以需等待几秒,在生产环境中不会经常初始化。
在订阅管理>消费者状态中可以看到,启动的消费端已经在线,并且订阅关系一致。
以 Spring 方式启动收发消息
- 运行 MQProducer4Spring 类发送消息。
- 运行 MQConsumer4Spring 类接收消息。
查看结果跟上面过程类似。
发送事务消息
运行 SimpleTransactionProducer 类发送消息。
说明:LocalTransactionCheckerImpl 类为本地事务 check 接口类。用于校验事务。详情请参考发送分布式事务消息。
发送定时(延时)消息
运行 MQTimerProducer 类发送消息。延时3秒后投递。
说明:MQ 也可以指定一个精确的投递时间,最长定时时间为40天。具体请参考发送定时消息。
HTTP、MQTT 物联接入
- HTTP 接入请参考 MQ HTTP 接入。
- MQTT 接入请参考 MQTT 接入。