################################################
1.安装Erlang
sudo yum install erlang
2.安装RabbitMQ Server
需要先导入key
sudo rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
可先将内容保存至文本文件,如,rabbitmq-signing-key-public.asc.txt
sudo rpm --import rabbitmq-signing-key-public.asc.txt
3.安装rabbitmq-server-3.4.1-1.noarch.rpm
sudo yum install rabbitmq-server-3.4.1-1.noarch.rpm
4.启动RabbitMQ Server
注册为系统服务
sudo chkconfig rabbitmq-server on
启动RabbitMQ Server
sudo /etc/init.d rabbitmq-server stop/start/etc
sudo service rabbitmq-server stop/start/etc
5.若启动失败检测端口是否被占用
4369 (epmd), 25672 (Erlang distribution)
5672, 5671 (AMQP 0-9-1 without and with TLS)
15672 (if management plugin is enabled)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled)
MQTT 是一种基于发布订阅模型的即时通讯协议,主要应用于物联网设备中
MQTT主要需要MQ服务器地址、用户名、密码、发布主题和响应主题,以及客户端唯一标识
使用方法:
为了防止内存泄漏,我们使用Application的Context
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议。它是一种发布/订阅,极其简单和轻量级的消息传递协议,专为受限设备和低带宽,高延迟或不可靠的网络而设计。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境。相对于XMPP,MQTT更加轻量级,并且占用的宽带低。
MQTT协议有以下特点:
那么问题来了?重连连接成功后重复接收到最后一条消息
MQTT推送消息订阅端重复接收问题。
(背景)订阅端断开的时候,发布端多次推送消息。
(现象)订阅端启动时,接收到最后一条推送消息有两次;即使Qos设置为2;依然是两次。
经排查是因为
MqttMessage的Retained设置为了true
该值很多文章上只说了是 消息保留机制,若设置为true,mqtt服务器会保留每次发布的消息;较少提到 若订阅某主题的客户端重启,则会把此主题之前发布的消息重新推送到客户端。该值默认为false去掉修改该值即可
那么问题来了?重连连接后手动那么多遗漏的消息,怎么选择只接收最新的一条消息呢?
MQTT推送消息订阅端重复接收问题。
(背景)订阅端断开的时候,发布端多次推送消息。
(现象)订阅端启动时,接收到msg1,msg2,msg3 (这三个消息都是同一个类型消息,只需要处理最新的msg3就好,不然界面会刷新三次)这个谁有什么好办法没呢?
GitHub地址: https://github.com/eclipse/paho.mqtt.android
mqtt的官方文档: http://mqtt.org/documentation
Github上有中文翻译: https://github.com/mcxiaoke/mqtt
在module的build.gradle文件中添加依赖
在 AndroidManifest.xml 添加限权
在 AndroidManifest.xml 注册Service (MyMqttService为自己写的服务,下文会讲到)
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)