阿里消息中间 MQ 使用步骤

在这里我就不介绍什么 MQ 呢。
1、阿里消息队列(Message Queue,简称 MQ)是企业级互联网架构的核心产品,服务于整个阿里巴巴集团已超过 8 年,经过阿里巴巴交易核心链路反复打磨与历年双十一严苛考验,是一个真正具备低延迟、高并发、高可用、高可靠,可支撑万亿级数据洪峰的分布式消息中间件;
消息队列提供 MQ-MQTT 移动物联套件,连接端(如移动设备、智能家电、汽车、机器人等)和云,实现双向通信,可支撑亿级设备连接与百万消息并发;
消息队列秉持开放、共享的原则拥抱开源生态,无技术绑定,2016 年阿里巴巴正式宣布将 MQ 内核引擎 RocketMQ 捐赠给 Apache 软件基金会;与此同时,全面融合 kafka 生态,做到无缝迁移,打造更安全、更可靠、更易运维的 kafka 企业级消息服务。
2、进入阿里云购买消息中间 MQ 产品,具体地址 https://www.aliyun.com/product/ons?spm=5176.7920929.416540.89.Dlr3Q9,可支持免费测试。
3、进入到 MQ 产品管理控制台 https://ons.console.aliyun.com/#/home/topic
4、da005220b5da4b0e9bf53111e7dcfbef<em>DY7LS5YK0I<em>VMVXKHV.png
Topic 可以简单理解为消息发送具体的通道。

5.1 第一步创建 MQ 通道,点击发布 Topic

182277008a364216adf6a4feba526b0a<em>ZL92QOT6R<em>KIL9SM.png
5.1 第二步配置 TopIc 通道具体信息

b1655c89f95c461c9fdbf03cc5dd3175_undefined.png

点击确定后,创建通道成功。
5.2 第三步,点击创建后的,topIC 通道条目,找到申请发布。

60faff3dd89246b2bf0a8b7289c0472e<em>6YRB12TQY69<em>U4GF9U847.png

注明:申请发布,可以理解为创建生产者 Producer ID 唯一标识, 也就是发送消息端唯一标识。
5.3 第四步 ,创建订阅者
73d03e2159ca45629418c17be11e3b48<em>UXZY<em>V8TCXMKIAOC9MQI.png
订阅者,可以简单理解为,获取消息一方,也可以理解为消费者。
5.4 代码演示
发送者代码
```java
public static void main(String[] args) {
Properties properties = new Properties();
properties.put(PropertyKeyConst.ProducerId, “PID_Raydemo4”);
properties.put(PropertyKeyConst.AccessKey, “阿里云平台申请 AccessKey”);
properties.put(PropertyKeyConst.SecretKey, “阿里云平台申请 SecretKey”);
// 公有云生产环境:http://onsaddr-internal.aliyun.com:8080/rocketmq/nsaddr4client-internal
// 公有云公测环境:http://onsaddr-internet.aliyun.com/rocketmq/nsaddr4client-internet
// 杭州金融云环境:http://jbponsaddr-internal.aliyun.com:8080/rocketmq/nsaddr4client-internal
// 杭州深圳云环境:http://mq4finance-sz.addr.aliyun.com:8080/rocketmq/nsaddr4client-internal
properties.put(PropertyKeyConst.ONSAddr,
"http://onsaddr-internal.aliyun.com:8080/rocketmq/nsaddr4client-internal");// 此处以公有云生产环境为例
Producer producer = ONSFactory.createProducer(properties);

    // 在发送消息前,必须调用start方法来启动Producer,只需调用一次即可。
    producer.start();
    Message msg = new Message(
         // Message Topic
         "RayMQdemo2", // Message Tag, // 可理解为Gmail中的标签,对消息进行再归类,方便Consumer指定过滤条件在ONS服务器过滤 "TagA", // Message Body // 任何二进制形式的数据,ONS不做任何干预,需要Producer与Consumer协商好一致的序列化和反序列化方式 "测试数据哈哈哈".getBytes()); // 设置代表消息的业务关键属性,请尽可能全局唯一。 // 以方便您在无法正常收到消息情况下,可通过ONS Console查询消息并补发。 // 注意:不设置也不会影响消息正常收发 msg.setKey("ORDERID_100"); msg.setMsgID(System.currentTimeMillis() + ""); // 发送消息,只要不抛异常就是成功 SendResult sendResult = producer.send(msg); System.out.println(sendResult); // 在应用退出前,销毁Producer对象 // 注意:如果不销毁也没有问题 producer.shutdown(); } ``` 

接受端代码

	public static void main(String[] args) {
		Properties properties = new Properties();
		properties.put(PropertyKeyConst.ConsumerId, "CID_Raydemo3");
		properties.put(PropertyKeyConst.AccessKey, "阿里云平台申请AccessKey");
		properties.put(PropertyKeyConst.SecretKey, "阿里云平台申请SecretKey");
		Consumer consumer = ONSFactory.createConsumer(properties);
		consumer.subscribe("RayMQdemo4", "*", new MessageListener() { public Action consume(Message message, ConsumeContext context) { System.out.println("Receive: " + message); return Action.CommitMessage; } }); consumer.start(); System.out.println("Consumer Started"); }