全部产品

Demo 工程

本文以 TCP 协议下的 Java 为例,提供操作示例帮助您从零开始搭建消息队列测试工程,提供 Spring 和纯 Java 两种使用方式。Demo 工程包含普通消息、顺序消息、事务消息和定时、延时消息的配置以及测试代码。

前提条件

  • 安装 IDE。您可以使用 IntelliJ IDEA 或者 Eclipse,本文以 IntelliJ IDEA 为例。在 https://www.jetbrains.com/idea/ 下载IntelliJ IDEA Ultimate 版本,并参考 IntelliJ IDEA 说明进行安装。

  • 下载 Demo 工程。在 https://github.com/sofastack-guides/sofamq-demo 下载 Demo 工程到本地,然后解压即可看到本地新增了 sofamq-demo 文件夹。

  • 下载安装 JDK。

配置 Demo 工程

  1. 将 Demo 工程文件导入 IntelliJ IDEA

    1. 在 IntelliJ IDEA 界面,选择 New > Project From Existing Sources…,选择 sofamq-demo 文件夹。sofamq-demo

    2. 选择 Import 类型为 Maven。maven

    3. 默认点击 Finish,直到导入完成。Demo 工程需要加载依赖的 JAR 包,因此导入过程需要等待 2-3 分钟。

  2. 创建资源您需要先到控制台创建所需资源,包括消息队列的工作空间、Topic、Group ID(GID),以及鉴权需要的 AccessKey(AK)。更多详细信息和操作指导,请参见 快速入门 > 创建资源

  3. 配置 Demo您需将在步骤二中创建好的资源信息配置到:MqConfig 类和 application.properties

    1. 按以下说明配置 MqConfig 类,适用于非 Spring Boot 使用方式

      public static final String TOPIC ="刚才创建的Topic";
      public static final String GROUP_ID ="刚才创建的Group ID";
      public static final String ACCESS_KEY ="您的阿里云账号的AccessKeyId";
      public static final String SECRECT_KEY ="您的阿里云账号的AccessKeySecret";
      public static final String INSTANCE  ="您的实例ID,可在控制台概览页底部接入配置获取实例ID";
      public static final String TAG  ="您发布订阅时使用的TAG,如没有可为空";
      public static final String ENDPOINT ="您的 TCP 接入点,可在控制台概览页底部接入配置获取 TCP 协议接入点";
      说明

      创建 AccessKey(包括 AccessKeyId 和 AccessKeySecret)的具体步骤,请参见 创建 AccessKey

    2. 配置 application.properties,适用于 Spring Boot 使用方式

      #启动测试之前请替换如下 XXX 为您的配置
      sofamq.accessKey=XXX
      sofamq.secretKey=XX
      sofamq.endpoint=XXX
      sofamq.instanceId=XXX
      sofamq.topic=XXX
      sofamq.groupId=XXX
      sofamq.tag=*

以 Main 方式运行 Demo

  1. 发送消息

    • 发送普通消息:

      • 以纯 Java 方式发送普通消息:运行 SimpleProducer 类。

      • 以 Spring 方式发送普通消息:运行 ProducerClient 类。

    • 发送事务消息:运行 SimpleTransactionProducer 类。LocalTransactionCheckerImpl 类为本地事务 check 接口类,用于校验事务。详情请参见 收发事务消息

    • 发送顺序消息:运行 SimpleOrderProducer 类。此方式下,消息发布和消费都按顺序进行。详情请参见 收发顺序消息

    • 发送定时(延时)消息:运行 SimpleDelayProducer 类发送消息。延时 3 秒后投递。您也可以指定一个精确的投递时间,最长定时时间为 40 天。登录消息队列控制台,在左侧导航栏选择消息查询 > 按 Topic 查询,选择 Topic 名称进行查询。可以看见消息已经发送至 Topic。

  2. 接收消息

    • 接收普通消息:

      • 以纯 Java 方式接收普通消息:运行 SimpleConsumer 类。

      • 以 Spring 方式接收普通消息:运行 ConsumerClient 类。

    • 接收事务消息:运行 SimpleConsumer 类。

    • 接收顺序消息:运行 SimpleOrderConsumer 类。

    • 接收定时(延时)消息:运行 SimpleConsumer 类。可以看到消息被接收打印的日志。因为有初始化,所以需等待几秒,在生产环境中不会经常初始化。从消息队列控制台进入 Group 管理 > 消费者状态,可以看到启动的消费端已经在线,并且订阅关系一致。

更多信息