全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
消息队列 MQ

步骤三:发送消息

更新时间:2018-03-07 14:28:19

在控制台创建 Topic 资源后,您可以通过控制台发送消息或者调用 SDK/API 发送消息。控制台发送消息主要用于快速验证 Topic 资源的可用性,在生产环境下使用 MQ 建议调用相关的 SDK/API 进行消息发送。

通过控制台发送消息

控制台发送消息步骤如下:

  1. 在 MQ 控制台的左侧菜单栏单击生产者管理

  2. 在列表中找到您刚刚创建的 Topic,单击右侧操作栏里的发送

  3. 发送消息对话框输入消息的具体内容,单击确定。控制台会返回消息发送成功通知以及相应的 Message ID。

调用 SDK/API 发送消息

在生产环境使用 MQ,建议调用 SDK/API 来进行消息发送。本文以 TCP 协议下调用 Java SDK 为例进行说明。如果需要使用其他协议或者开发语言,请参见相关帮助文档。

调用 TCP Java SDK 发送消息

  1. 通过下面两种方式可以引入依赖(任选一种):

    • Maven 方式引入依赖:

      1. <dependency>
      2. <groupId>com.aliyun.openservices</groupId>
      3. <artifactId>ons-client</artifactId>
      4. <version>1.7.0.Final</version>
      5. </dependency>
    • 下载依赖 JAR 包:下载链接

    说明:关于 TCP 接入点域名,请参见TCP 接入说明

  2. 根据以下说明设置相关参数,运行示例代码:

  1. import com.aliyun.openservices.ons.api.Message;
  2. import com.aliyun.openservices.ons.api.Producer;
  3. import com.aliyun.openservices.ons.api.SendResult;
  4. import com.aliyun.openservices.ons.api.ONSFactory;
  5. import com.aliyun.openservices.ons.api.PropertyKeyConst;
  6. import java.util.Properties;
  7. public class ProducerTest {
  8. public static void main(String[] args) {
  9. Properties properties = new Properties();
  10. // 您在 MQ 控制台创建的 Producer ID
  11. properties.put(PropertyKeyConst.ProducerId, "XXX");
  12. // 鉴权用 AccessKey,在阿里云服务器管理控制台创建
  13. properties.put(PropertyKeyConst.AccessKey,"XXX");
  14. // 鉴权用 SecretKey,在阿里云服务器管理控制台创建
  15. properties.put(PropertyKeyConst.SecretKey, "XXX");
  16. // 设置 TCP 接入域名(此处以公共云的公网接入为例)
  17. properties.put(PropertyKeyConst.ONSAddr,
  18. "http://onsaddr-internet.aliyun.com/rocketmq/nsaddr4client-internet");
  19. Producer producer = ONSFactory.createProducer(properties);
  20. // 在发送消息前,必须调用 start 方法来启动 Producer,只需调用一次即可
  21. producer.start();
  22. //循环发送消息
  23. while(true){
  24. Message msg = new Message( //
  25. // 在控制台创建的 Topic,即该消息所属的 Topic 名称
  26. "TopicTestMQ",
  27. // Message Tag,
  28. // 可理解为 Gmail 中的标签,对消息进行再归类,方便 Consumer 指定过滤条件在 MQ 服务器过滤
  29. "TagA",
  30. // Message Body
  31. // 任何二进制形式的数据, MQ 不做任何干预,
  32. // 需要 Producer 与 Consumer 协商好一致的序列化和反序列化方式
  33. "Hello MQ".getBytes());
  34. // 设置代表消息的业务关键属性,请尽可能全局唯一,以方便您在无法正常收到消息情况下,可通过 MQ 控制台查询消息并补发
  35. // 注意:不设置也不会影响消息正常收发
  36. msg.setKey("ORDERID_100");
  37. // 发送消息,只要不抛异常就是成功
  38. // 打印 Message ID,以便用于消息发送状态查询
  39. SendResult sendResult = producer.send(msg);
  40. System.out.println("Send Message success. Message ID is: " + sendResult.getMessageId());
  41. }
  42. // 在应用退出前,可以销毁 Producer 对象
  43. // 注意:如果不销毁也没有问题
  44. producer.shutdown();
  45. }
  46. }

查看消息是否发送成功

消息发送后,您可以在控制台查看消息发送状态,步骤如下:

  1. 在 MQ 控制台左侧菜单栏中单击消息查询

  2. 消息查询页面,选择按 Message ID 查询标签页。

  3. 在搜索框中输入发送消息后返回的 Message ID,单击搜索查询消息发送状态。

    “储存时间”表示 MQ 服务端存储这条消息的时间。如果查询到此消息,表示消息已经成功发送到服务端。

注意:此步骤演示的是第一次使用 MQ 的场景,此时订阅端从未启动过,所以消息状态显示暂无消费数据。要启动订阅端并进行消息订阅请继续下一步操作订阅消息。更多消息状态请参见消息查询

本文导读目录