开发者社区> 问答> 正文

HTTP 接入Java 收发消息如何实现?



下载官网 Demo


下载地址

导入工程


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

修改配置文件


  1. 修改 producer.xml,该文件在src/main/resources/producer/producer.xml路径下。如下所示,修改为自己在阿里云商分配的配置:
    域名 Domain 列表 <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>

修改 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 里的文件 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();


消息接收



特别说明


如果消息没有其他端消费接入(比如使用C++ TCP,JAVA TCP),建议优先接入MNS,MNS专为多语言消息服务。 MNS接入文档
运行 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();

展开
收起
猫饭先生 2017-10-27 10:15:13 1792 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
如何通过 Serverless 提高 Java 微服务治理效 立即下载
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载