我想知道是否保留了消息发送顺序.也就是说,当发布者发送一系列消息时,每个订阅者是否保证收到与发布者发送的相同的序列?对于干净和持久的会话?
我正在使用node.js mosca MQTT代理来处理一些物联网(iot)应用程序.
https://github.com/mcollina/mosca
主题可以为mosca代理获得的最大消息长度是多少?限制消息长度的因素有哪些?
如果我想增加消息长度,是否有可以修改的配置参数或者我可以更改代码的哪一部分?
在云连接方面,MQTT和AMQP有什么区别?我需要在连接云方面比较这两个协议,我发现更多证据表明AMQP工作得更好,但我仍然需要找出差异.
我正在研究我最初在iPhone上创建的应用程序的Android版本,这个应用程序需要每天向用户发送数百万个推送通知(如果它像iPhone版本一样成功).
我天真地认为Android平台有一个推送通知服务作为它的兄弟,所以我决定在开发结束时看看这个功能,现在我在这里!
我搜索了stackoverflow以获取有关此功能的问题(问题?)并找到了几个选项(感谢大家!)但是你们中的任何一个人能够用这样的音量来实现这样的功能吗?
这是我找到的选项:
我读过Xtify或Urban Airship,但这些商业解决方案都没有帮助(数量或成本).
谢谢你的任何提示!
编辑:我的目标是每天最多发送5,000,000条通知
我需要实现Android的推送通知,但不会有互联网访问,只有内部网访问可用.所以我认为我不能使用C2DM和第三方API,如UrbanAirship.所以我正在考虑使用MQTT RSMB(真正的小型消息代理),C#.net作为代理的发布者和作为代理的代理的Android的wMqtt.jar.
我已下载RSMB并找到以下exe:-broker.exe -stdinpub.exe -stdoutsub.exe
我已经成功订阅了Android并使用stdinpub.exe和主题发布了消息.
我想从你们这里得到一些关于以下方面的建议:
1).RSMB是免费的吗?还有其他适合我的情况吗?
2).我将能够使用C#连接到RSMB代理(用于发布和订阅).RSMB是否有任何C#客户端库?
3).如何提高MQTT的性能和可靠性?我可能需要同时推送几百条消息.
4).如果没有其他方法,那么我正在考虑在我的C#应用程序中执行stdinpub.exe.(听起来可能不错).
我发现在网络上关于MQTT的信息非常少,我应该这样做还是有其他选择?
我正在使用paho发送和接收mqtt消息.到目前为止,发送消息没有问题,我通过使用mosquitto接收它们.
现在我想通过使用java客户端阅读消息,我注意到有关接收消息的文档较少.
我实现了MqttCallback接口,但我仍然无法弄清楚如何阅读我订阅的主题的消息.
这是我的源代码到目前为止,我可以使用mosquitto_sub读取消息.
import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
public class PahoDemo implements MqttCallback {
MqttClient client;
MqttClient subClient;
public PahoDemo() {
}
public static void main(String[] args) {
new PahoDemo().doDemo();
}
public void doDemo() {
try {
client = new MqttClient("tcp://192.168.118.11:1883", "Sending");
subClient = new MqttClient("tcp://192.168.118.11:1883",
"Subscribing");
client.connect();
subClient.connect();
subClient.subscribe("foo");
MqttMessage message = new MqttMessage();
message.setPayload("A single message from my computer fff"
.getBytes());
client.publish("foo", message);
client.disconnect();
client.close();
subClient.disconnect();
subClient.close();
} catch (MqttException e) { …
Run Code Online (Sandbox Code Playgroud) 我已经创建了一个client
类型MqttClient
,如下面的代码所示,我创建了一个客户端并且它是它的Asynchronous callback
.问题是,
1 - 当我运行程序时,System.out.println("Client is Connected");
出现了,但是我没有收到onSuccess
来自o的响应onFailure
,为什么?我在代码中做错了.
2-i实现了static IMqttAsyncClient asynchClientCB = new IMqttAsyncClient()
接口,但由于我有一个类型的客户端MqttClient
,我不能使用这个IMqttAsyncClient
接口.我尝试使用mqttAsynchClien
但是因为我为java编程而不是因为Android
我无法使用它.如何使用IMqttAsyncClient
界面.?
Update_1
在下面的代码"Updated_code_1",我稍微修改了的代码,但我期望每个i成功地连接到时间broker
在消息onSuccess
要被打印同步回调,并且在消息onFailure
中onnection的情况下,要被打印同步callbck终止如当我故意断开网络.但是在我连接到的时候broker
,既没有onSuccess
也没有onFailur
任何事情.那么,它们的设计目的是什么?
*Update_2_17_Dec_2014
我有一个询问可能会引导我们找到解决方案,也就是说,如果我通过有线/无线网络连接到代理,这有关系吗?会改变同步和异步监听器的行为吗?
Updated_1_code:
MqttConnectOptions opts = getClientOptions();
client = MQTTClientFactory.newClient(broker, port, clientID);
if (client != null) {
System.out.println("Client is not Null");
client.setCallback(AsynchCallBack);
if (opts != null) {
iMQTTToken …
Run Code Online (Sandbox Code Playgroud) 想要了解推送通知的根本原因,例如谷歌云消息传递(之前称为谷歌云到设备消息传递)更适合电池,用于云< - >设备通信?
在我看来,替代技术涉及"轮询"(通过TCP/IP),同时使用keep-alives将连接保持在CONNECTED状态.还是有更好的东西?
我对GCM的有限承诺是,它还使用TCP/IP和Keepalive,但客户端从不轮询服务器的状态.相反,服务器通知客户端有关传入消息,并且订阅特定类型消息的应用程序将异步通知消息.此外,公共GCM连接在多个应用程序之间共享,因此允许设备电子设备在"协调"时间睡眠/休眠,而没有多个应用程序使电子设备保持比其需要的"开启"(电活动).这是正确的理解吗?或者还有更多吗?
最后,这与使用keepalive的TCP/IP上的MQTT相比如何?MQTT(显然)比GCM电池效率低的原因是什么?
我已经阅读了很多与此有关的问题,但没有一个令人满意.
现有应用程序
使用Expressjs作为API 实现的极简社交网络.使用MySql作为DB.socket.io用于通知, ember.js用作前端框架.
我想要整合什么
我想只实现XMPP的一些功能,如
- 同行2同行消息
- 存在和最后看到
- 群聊
- 阅读收据
我从阅读类似问题得到的基本想法.
- 需要一个客户端库(Strophe.js,Converse.js)
- 需要一个XMPP服务器(ejabberd,Openfire,Prosody)
问题
我问的问题可能过于广泛.但是仍然不知道使用哪种技术.
作为访问由各种PLC组成的系统的过程数据的解决方案,OPC-UA是否还有其他可行的替代方案?什么是平台独立的,可以与不同品牌的产品"说话"?
我听说过MQTT,但它似乎更像是传输协议,只有那样.它没有像信息建模等所有更高级别的东西.
谢谢你的帮助!