全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
消息队列 MQ

Java 收发消息

更新时间:2017-08-24 17:41:20

本文主要描述如何在 Java 环境下使用 HTTP 协议收发 MQ 消息。

下载官网 Demo

下载地址

导入工程

HTTP 的 Demo 在 http/java-http-demo路径下,使用 Eclipse 或者 Idea 打开http/java-http-demo。具体可参考 Idea 配置教程

修改配置文件

  1. 修改 producer.xml,该文件在src/main/resources/producer/producer.xml路径下。如下所示,修改为自己在阿里云商分配的配置:

    域名 Domain 列表

    1. <bean id="producer" class="com.alibaba.ons.message.example.producer.HttpMQProducer">
    2. <!-- domain,请替换,从域名列表选择Topic所在region的域名 -->
    3. <property name="url" value="http://domain/message" />
    4. <!-- 阿里云身份验证码,请替换 -->
    5. <property name="accessKey" value="XXXXXX" />
    6. <!-- 阿里云身份验证密钥,请替换 -->
    7. <property name="secretKey" value="XXXXXX" />
    8. <!-- MQ控制台创建的Topic,请替换 -->
    9. <property name="topic" value="XXXXXX" />
    10. <!-- MQ控制台创建的Producer ID,请替换 -->
    11. <property name="producerId" value="XXXXXX" />
    12. </bean>
  2. 修改 consumer.xml,该文件在src/main/resources/consumer/consumer.xml路径下。如下所示,修改为自己的配置:

    1. <bean id="consumer" class="com.alibaba.ons.message.example.consumer.HttpMQConsumer">
    2. <!-- domain,请替换,从域名列表选择Topic所在region的域名 -->
    3. <property name="url" value="http://domain/message" />
    4. <!-- 阿里云身份验证码,请替换 -->
    5. <property name="accessKey" value="XXXXXX" />
    6. <!-- 阿里云身份验证密钥,请替换 -->
    7. <property name="secretKey" value="XXXXXX" />
    8. <!-- MQ控制台创建的Topic,请替换 -->
    9. <property name="topic" value="XXXXXX" />
    10. <!-- MQ控制台创建的Consumer ID,请替换 -->
    11. <property name="consumerId" value="XXXXXX" />
    12. </bean>

运行 Demo

发送 Demo

运行 Demo 里的文件 TestHttpProducerApp.java ,该文件内容如下:

  1. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("producer/producer.xml");
  2. HttpMQProducer producer = context.getBean(HttpMQProducer.class);
  3. // 发送定时消息: producer.send("msg", "tag", "key", startDeliverTime);
  4. if (producer.send("msg", "tag", "key")) {
  5. System.out.println("send message success");
  6. } else {
  7. System.out.println("send message failed");
  8. }
  9. context.close();

接收 Demo

运行 Demo 里面的 TestHttpConsumerApp.java 文件,该文件内容如下:

  1. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer/consumer.xml");
  2. HttpMQConsumer consumer = context.getBean(HttpMQConsumer.class);
  3. List<SimpleMessage> list = consumer.pull();
  4. if (list != null && list.size() > 0) {
  5. for (SimpleMessage simpleMessage : list) {
  6. System.out.println(simpleMessage);
  7. // 当消息处理成功后,需要进行delete,如果不及时delete将会导致重复消费此消息
  8. String msgHandle = simpleMessage.getMsgHandle();
  9. if (consumer.delete(msgHandle)) {
  10. System.out.println("delete success: " + msgHandle);
  11. } else {
  12. System.out.println("delete failed: " + msgHandle);
  13. }
  14. }
  15. }
  16. context.close();
本文导读目录