十分钟快速玩转 Aliware MQ-阿里云消息队列Demo工程实践

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本 Demo 主要目的在于帮助初次接触 Aliware MQ 的工程师,一步一步搭建 MQ 测试工程。Demo 程序以 Java 为例,包括普通消息、事务消息、定时消息的测试代码,以及相关 Spring 的配置示例。

环境准备

本 Demo 主要目的在于帮助初次接触 Aliware MQ 的工程师,一步一步搭建 MQ 测试工程。Demo 程序以 Java 为例,包括普通消息、事务消息、定时消息的测试代码,以及相关 Spring 的配置示例。

MQ原理图

安装 IDE

本文以 IDEA 为例。您可以使用 IDEA 或者 Eclipse。

  1. https://www.jetbrains.com/idea/ 下载 IDEA。请下载 Ultimate 版本。
  2. 执行 IDEA 安装包,安装 IDEA。
  3. 选择 License server 激活方式,填入 License server address(填入合法地址),例如 http://idea.iteblog.com/key.php (仅做参考)。
  4. 单击 Discover server
  5. 单击最下方激活按钮,激活成功。

安装 Git

请按以下步骤操作:

  1. Git 官网下载安装包,双击进行安装。
  2. 访问官网 https://github.com/ 注册 GitHub 账号。
  3. 生成 GitHub 秘钥,在本机命令行里输入 ssh-keygen -t rsa -C "xxxx@163.com"(您注册 GitHub 的邮箱),使用默认值回车2次。
  4. 执行以下命令:

    cd ~/.ssh/


cat id_rsa.pub

  1. 把 cat 的内容,即 GitHub 公钥整体复制下来。
  2. 登录 GitHub 官网,单击 Settings,在左侧菜单选择 SSH and GPG keys
  3. 单击页面右上角 New SSH key,输入相关信息后单击 Add SSH key 保存。

    • Title: 可以自定义填写
    • Key: 将刚才复制的 GitHub 公钥粘贴在此处

GITKEY

下载 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,请先下载安装。

  1. 双击 IDEA 图标打开 IDEA。
  2. 选择 Import Project,选择 MQ Demo 文件夹。
    idea-import
  3. 选择 Import 类型。
    idea-import-2
  4. 默认单击 Next,直到导入完成。Demo 工程需要加载依赖的 Jar 包,因此导入过程需要等待2-3分钟。

申请 MQ 资源(全免费)

请在 MQ 控制台创建 Topic、发布组 Producer ID(PID)、订阅组 Consumer ID (CID)。公网测试 Region 免 Topic 占用费,前2000万次调用免费。

  1. 进入 Aliware MQ 产品首页:https://www.aliyun.com/product/ons/
  2. 单击免费开通,进入管理控制台。
  3. 选择公网测试 域(默认),单击右侧发布 Topic,输入 Topic 名称(尽量个性化避免重复),单击确定

创建Topic

  1. 创建发布组 PID。在 Topic 管理列表中单击申请发布
    创建PID
  2. 创建订阅组 CID。在 Topic 管理列表中单击申请订阅
    创建CID

详细信息请参考申请 MQ 资源

配置 MQ Demo

需要配置3个文件:MqConfig 类,producer.xml,consumer.xml。

  1. 配置 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。

AKSK

  1. 配置 producer.xml。
    配置P-XML
  2. 配置 consumer.xml。
    配置C-XML

运行 Demo

以 Main 方式启动收发消息

  1. 运行 SimpleMQProducer 类发送消息。
  2. 登录 MQ 控制台,在左侧菜单栏选择消息查询>Topic 查询,选择 Topic 名称进行查询。可以看见消息已经发送至 Topic。

Topic查询

  1. 运行 SimpleMQConsumer 类接收消息。可以看到消息被接收打印的日志。因为有初始化,所以需等待几秒,在生产环境中不会经常初始化。

打印消费端日志

订阅管理>消费者状态中可以看到,启动的消费端已经在线,并且订阅关系一致。

消费者状态

以 Spring 方式启动收发消息

  1. 运行 MQProducer4Spring 类发送消息。
  2. 运行 MQConsumer4Spring 类接收消息。

查看结果跟上面过程类似。

发送事务消息

运行 SimpleTransactionProducer 类发送消息。

说明:LocalTransactionCheckerImpl 类为本地事务 check 接口类。用于校验事务。详情请参考发送分布式事务消息

发送定时(延时)消息

运行 MQTimerProducer 类发送消息。延时3秒后投递。

说明:MQ 也可以指定一个精确的投递时间,最长定时时间为40天。具体请参考发送定时消息

HTTP、MQTT 物联接入

  1. HTTP 接入请参考 MQ HTTP 接入
  2. MQTT 接入请参考 MQTT 接入
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
SQL 分布式计算 关系型数据库
阿里云E-MapReduce Trino专属集群外连引擎及权限控制踩坑实践
本文以云厂商售后技术支持的角度,从客户的需求出发,对于阿里云EMR-Trino集群的选型,外连多引擎的场景、Ldap以及Kerberos鉴权等问题进行了简要的实践和记录,模拟客户已有的业务场景,满足客户需求的同时对过程中的问题点进行解决、记录和分析,包括但不限于Mysql、ODPS、Hive connector的配置,Hive、Delta及Hudi等不同表格式读取的兼容,aws s3、阿里云 oss协议访问异常的解决等。
|
21天前
|
SQL 存储 API
阿里云实时计算Flink的产品化思考与实践【下】
本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。
110247 10
阿里云实时计算Flink的产品化思考与实践【下】
|
1月前
|
消息中间件 Java
springboot整合消息队列——RabbitMQ
springboot整合消息队列——RabbitMQ
74 0
|
3天前
|
消息中间件 传感器 网络协议
阿里云MQTT简介和使用流程
以下是内容的摘要: 该文主要介绍了在阿里云上搭建 MQTT 服务器的步骤。首先,需要注册阿里云账号并进行实名认证。然后,购买阿里云 MQTT 实例,选择合适的类型、地域、连接和消息限制。接着,创建产品和设备,命名并上线,获取 MQTT 连接的相关信息,包括 ProductKey、DeviceName 和 DeviceSecret。通过提供的 MQTT.fx 工具,设置 MQTT 客户端连接参数,包括 Broker 地址、端口、用户名和密码。最后,使用 MQTT.fx 测试连接,实现数据的上报和接收,验证 MQTT 服务器的配置是否成功。
|
6天前
|
网络协议 Java 物联网
阿里云服务器上搭建 MQTT服务
阿里云服务器上搭建 MQTT服务
|
9天前
|
消息中间件 人工智能 监控
|
11天前
|
弹性计算 前端开发 Java
使用阿里云 mqtt serverless 版本超低成本快速实现 webscoket 长链接服务器
使用阿里云 MQTT Serverless 可轻松实现弹性伸缩的 WebSocket 服务,每日成本低至几元。适用于小程序消息推送的 MQTT P2P 模式。前端需注意安全,避免 AK 泄露,采用一机一密方案。后端通过调用 `RegisterDeviceCredential` API 发送消息。示例代码包括 JavaScript 前端连接和 Java 后端发送。
101 0
|
11天前
|
消息中间件 存储 负载均衡
消息队列学习之RabbitMQ
【4月更文挑战第3天】消息队列学习之RabbitMQ,一种基于erlang语言开发的流行的开源消息中间件。
15 0
|
28天前
|
弹性计算 网络协议 关系型数据库
网络技术基础阿里云实验——企业级云上网络构建实践
实验地址:<https://developer.aliyun.com/adc/scenario/65e54c7876324bbe9e1fb18665719179> 本文档指导在阿里云上构建跨地域的网络环境,涉及杭州和北京两个地域。任务包括创建VPC、交换机、ECS实例,配置VPC对等连接,以及设置安全组和网络ACL规则以实现特定服务间的互访。例如,允许北京的研发服务器ECS-DEV访问杭州的文件服务器ECS-FS的SSH服务,ECS-FS访问ECS-WEB01的SSH服务,ECS-WEB01访问ECS-DB01的MySQL服务,并确保ECS-WEB03对外提供HTTP服务。
|
30天前
|
消息中间件 Linux API
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
23 1
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践

相关产品

  • 云消息队列 MQ