Activemq MQTT 简单消息推送示例


简介

    简单使用 MQTT 连接 Activemq 进行消息推送的示例代码

编写详情

环境准备

    使用docker启动Activemq,查看MQTT协议监听端口是否正确,如下命令,显示1883:

docker run -dit --name activemq -p 11616:61616 -p 8161:8161 -p 1883:1883 rmohr/activemq
docker exec -ti activemq cat /opt/activemq/conf/activemq.xml

订阅者

    类似手机客户端,接收消息推送,简单打印收到的消息,代码如下:

import org.fusesource.hawtbuf.Buffer;
import org.fusesource.hawtbuf.UTF8Buffer;
import org.fusesource.mqtt.client.*;public class Listener {public static void main(String[] args) throws Exception {MQTT mqtt = new MQTT();mqtt.setHost("localhost", 1883);mqtt.setUserName("admin");mqtt.setPassword("admin");final CallbackConnection connection = mqtt.callbackConnection();connection.listener(new org.fusesource.mqtt.client.Listener() {@Overridepublic void onConnected() {}@Overridepublic void onDisconnected() {}@Overridepublic void onPublish(UTF8Buffer utf8Buffer, Buffer buffer, Runnable runnable) {String message = buffer.utf8().toString();System.out.println("Receive message : " + message);}@Overridepublic void onFailure(Throwable throwable) {}});connection.connect(new Callback<Void>() {@Overridepublic void onSuccess(Void aVoid) {Topic[] topics = {new Topic("mqttTest", QoS.AT_LEAST_ONCE)};connection.subscribe(topics, new Callback<byte[]>() {@Overridepublic void onSuccess(byte[] bytes) {System.out.println("subscribe success");}@Overridepublic void onFailure(Throwable throwable) {System.out.println("subscribe failed");}});}@Overridepublic void onFailure(Throwable throwable) {}});synchronized (Listener.class) {while (true) {Listener.class.wait();}}}
}

发布者

    进行消息的发布,代码大致如下:

import org.fusesource.hawtbuf.AsciiBuffer;
import org.fusesource.hawtbuf.UTF8Buffer;
import org.fusesource.mqtt.client.FutureConnection;
import org.fusesource.mqtt.client.MQTT;
import org.fusesource.mqtt.client.QoS;public class Publisher {public static void main(String[] args) throws Exception {MQTT mqtt = new MQTT();mqtt.setHost("localhost", 1883);mqtt.setUserName("admin");mqtt.setPassword("admin");FutureConnection connection = mqtt.futureConnection();connection.connect().await();System.out.println("connect");int messageAmount = 10;UTF8Buffer topic = new UTF8Buffer("mqttTest");while (messageAmount > 0) {connection.publish(topic, new AsciiBuffer("test message" + messageAmount), QoS.AT_LEAST_ONCE, false);System.out.println("send message " + messageAmount);messageAmount -= 1;}connection.disconnect().await();System.out.println("disconnect");}
}

运行

    先启动订阅者,再启动发布者,可以看到消息发送和接收

参考链接

  • ActiveMq之MQTT(即时聊天&物联网技术)

  • MQTT

  • activemq example:

    • Listener.java
    • Publisher.java
    • pom.xml

Activemq MQTT 简单消息推送示例相关推荐

  1. Android MQTT实现消息推送

    飞哥语录:编程说白了就是发送数据,接收数据,处理数据. 1.概述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有 ...

  2. 基于MQTT的消息推送

    这段时间学习了推送技术,对xmpp和mqtt 协议做了下比较. xmpp基于xml信息传递,所以传输信息量比较大,在保持长链接情况下功耗会比较大. 可能还是比较适合用来做聊天之类的通讯应用,而对于智能 ...

  3. netty websocket 简单消息推送demo

    2019独角兽企业重金招聘Python工程师标准>>> 今天心情很不好!!! 原因保密. 这篇是基于"netty与websocket通信demo". 错误想法:大 ...

  4. java socket wex5_WeX5集成ActiveMQ+WebSocket实现消息推送

    1  首先下载并安装ActiveMQ http://www.apache.org/dyn/closer.cgi?path=/activemq/apache-activemq/5.9.0/apache- ...

  5. 浏览器WebSocket连接apollo的MQTT实现消息推送(WEB系统微信扫码登录)

    序 一直就想搭建消息队列的,因为目前业务发展还没有到这块,一直没有搭建.刚好今天接到的一个需求是web系统实现微信扫码登录,另外我们的微信对接是统一的中台接口对接,所以我们没办法做到回调我们的web业 ...

  6. Android平台上使用MQTT协议实现消息推送功能

    MQTT实现消息推送,效果如下 服务端下载地址:http://activemq.apache.org/download-archives.html jar包地址 百度网盘:https://pan.ba ...

  7. 持续集成之消息推送:钉钉与企业微信的群聊机器人通用示例

    使用钉钉和企业微信的群聊机器人可以进行消息推送,这篇文章使用一个简单的脚本来说明其使用方式. 推送消息的方法 钉钉或者企业微信的群机器人都可提供消息推送的功能,相关的机器人的添加和消息推送的方法可以参 ...

  8. SpringBoot如何集成MQTT消息推送

    1.需求分析 近期笔者项目需要用到mqtt实现消息推送,笔者选择emq作为mqtt服务器载体,上篇笔者讲解了如何在linux中安装mqtt服务:https://blog.csdn.net/zhangx ...

  9. Web 实时消息推送详解

    title: Web 实时消息推送详解 category: 系统设计 head: meta name: keywords content: 消息推送,短轮询,长轮询,SSE,Websocket,MQT ...

最新文章

  1. 晴天计算机按键,电脑怎样才能在按键的时候,按下去按键没反应,手台起来才有呢?...
  2. java 获取utc,如何在Java 8中获取UTC + 0日期?
  3. mysql 历史版本下载
  4. log4j中用变量配置日志输出文件位置
  5. twitter数据集_大数据周报-201925
  6. 粗糙表面的微表面模型——Physically Based Material
  7. C#控件绑定数据源方式
  8. 条款11 在operator=中处理“自我赋值”
  9. 局域网arp攻击_网络安全基础之ARP攻击和防御
  10. 实战:ajax带参数请求slim API
  11. 计算机网络基础笔记 运输层协议UDP/TCP
  12. 石子合并(动态规划DP)
  13. CTPN在windows的CPU上运行经验
  14. Struts1的工作流程
  15. HDU1757(矩阵快速幂+简单的矩阵构造)
  16. [附源码]Java计算机毕业设计SSM办公自动化系统
  17. 华为高端机mate20遇到了冲击高端手机市场的好时机
  18. 计算机 90学时培训总结,90学时的培训心得体会
  19. LFS 与 BLFS 总体解读
  20. VLAN,简单配置vlan

热门文章

  1. ERP通用附件管理功能设计与实现
  2. VC中将bmp作为资源文件写入EXE或DLL,然后内部调用(转)
  3. Css兼容:如何解决IE7和IE8的BUG
  4. Hbase CallQueueTooBigException 异常处理
  5. 推荐系统的变与不变:冷启动、召回排序、长期生态与目标拆解
  6. 2020,人工智能与产业结合的新纪年,你需要哪些能力可以脱颖而出?
  7. Solving environment: failed conda all InvalidVersionSpecError: Invalid version spec: =2.7报错
  8. 预训练新范式!为什么Prompt会更有效?
  9. 跨境电商独立站门槛高,为什么还有无数人挤破头想入坑!
  10. 使用反射获得jar包中的类、方法、参数、返回值类型,然后动态加载jar包运行方法