用户如何通过MQTT进行推送通知,在Linux中超过1024连接限制?
我正在使用Mosquitto服务器,我认为我读到的Linux版本没有内置1024连接限制.那么,我可以使用单个服务器(没有桥接等)并获得5,000,10,000多个用户吗?
或者,我绝对需要桥接吗?除了mosquitto的配置设置手册页之外,我还没有看到很多关于如何设置的文章.
或者,我可以通过修改一些Linux配置设置来完成,我很高兴与单个mosquitto服务器一起使用?
我的应用程序或多或少是一个即时消息应用程序,所以我希望有大约10,000甚至20,000人使用它与mosquitto永久24/7连接,提醒他们消息.
嗯
我在我的ubuntu机器上安装了mosquitto服务器和客户端软件包.当我运行命令"mosquitto"来运行mosquitto服务器时,我收到错误"错误:地址已在使用中".为什么我收到此错误?我该如何解决这个问题?
我正在使用mosquitto(http://mosquitto.org/)作为MQTT代理,我正在寻找有关负载平衡订阅者的建议(针对同一主题).这是如何实现的?我读过的关于协议的所有内容都表明同一主题的所有订阅者都将获得已发布的消息.
这似乎是低效的,因此我正在寻找一种方法,以循环方式将已发布的消息提供给其中一个连接的订户,以确保负载平衡状态.
如果MQTT无法做到这一点,那么订阅者如何避免被消息淹没?
我已经看到了mosquitto_pub -h [server] -r -n -t [XYZ]语法,用于清除一条消息.我的问题是设备开发人员发布了大量垃圾邮件.我有一个java/paho代码库,我想根据需要自动修改它,但我似乎无法发布零字节消息.我试过了
client.publish(topic,null);
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.
关于如何删除所有内容的任何建议.
以下命令显示发布到与正则表达式匹配但不是确切主题本身的主题的所有消息.
mosquitto_sub -h localhost -u user -P pass -t 'devices/#'
{"value":"50"}
{"value":"45"}
Run Code Online (Sandbox Code Playgroud)
例如,上面的json消息发布到主题设备/ 1234/transducer/46364 /但是我无法使用mosquitto_sub打印主题.
我想对mosquitto进行压力测试,所以我创建了一些代码,如下所示
for (int i = 0; i < 800; i++) {
final int j = i;
Thread t = new Thread(new Runnable() {
@Override
public void run() {
System.out.println(j + " : ************");
try {
MqttClient client = new MqttClient("tcp://192.168.88.203", SERVER_CLIENTID_PREFIX + j);
client.connect();
MqttMessage message = new MqttMessage((j + ":me").getBytes());
message.setQos(2);
client.publish(TOPIC_PREFIX + j, message);
} catch (MqttSecurityException e) {
e.printStackTrace();
} catch (MqttException e) {
e.printStackTrace();
}
}
});
t.start();
}
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了一些错误,比如EOFException在运行期间,一些客户端断开连接.我想知道有多少客户可以使用一台mosquitto服务器同时发布消息,我怎样才能进行压力测试.谢谢!
详细例外是:
Connection lost (32109) …Run Code Online (Sandbox Code Playgroud) 我已经在我的mac上安装了蚊子经纪人brew install mosquitto.
通常我不会给任何命令启动mosquitto服务器.当我打开我的mac时,它会自动启动.
我已通过使用命令验证它正在运行,该命令ps -ef | grep mosquitto提供以下输出
501 209 153 0 2:20PM ?? 0:06.93/usr/local/opt/mosquitto/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
501 2559 1007 0 10:36AM ttys001 0:00.00 grep mosquitto
501 865 815 0 2:32PM ttys003 0:00.86 mosquitto_sub -h 127.0.0.1 -t esb.test2
Run Code Online (Sandbox Code Playgroud)
然后我通过使用杀死mosquitto进程来停止服务器kill -9 above-pid.
现在我想知道如何从命令行重新启动服务器,但不重新启动我的mac.
有人知道在哪里可以得到在无限循环中发布和订阅的示例MQTT客户端Go(golang)代码吗?
我正在与在MacO上运行的Mosquitto代理进行消息传递。
更详细地...
这是我正在使用的代码:
package main
import (
"fmt"
MQTT "github.com/eclipse/paho.mqtt.golang"
"os"
"time"
)
var knt int
var f MQTT.MessageHandler = func(client MQTT.Client, msg MQTT.Message)
{
fmt.Printf("MSG: %s\n", msg.Payload())
text:= fmt.Sprintf("this is result msg #%d!", knt)
knt++
token := client.Publish("nn/result", 0, false, text)
token.Wait()
}
func main() {
knt = 0
opts := MQTT.NewClientOptions().AddBroker("tcp://localhost:1883")
opts.SetClientID("mac-go")
opts.SetDefaultPublishHandler(f)
c := MQTT.NewClient(opts)
if token := c.Connect(); token.Wait() && token.Error() != nil {
panic(token.Error())
}
if token := c.Subscribe("nn/sensors", 0, nil); …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在Windows上设置MQTT代理但没有结果.我对这个话题不太熟悉.我从http://mosquitto.org/download/下载了mosquitto文件,但我还没有运行服务器.我下载了Windows的二进制文件,并按照说明操作,但我只能运行代理,但我无法订阅.它说"缺少pthreadVC2.dll",我尝试安装它,但我不知道该怎么做.如果您能够建议我如何让经纪人运行,我感谢您的帮助.谢谢
我使用mosquitto服务器作为mqtt经纪人.我测试mosquitto的性能,我需要为某些数据订阅$ SYS层次结构,例如当前从$SYS/broker/clients/active主题连接的数量.我有以下mosquitto配置文件.
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
listener 1884
protocol websockets
listener 1883
sys_interval 1
max_connections -1
Run Code Online (Sandbox Code Playgroud)
我正在订阅这样的$SYS/broker/clients/active话题
ubuntu@linux-box:/etc/mosquitto$ mosquitto_sub -d -t $SYS/broker/clients/active
Client mosqsub/28715-ip-172-31 sending CONNECT
Client mosqsub/28715-ip-172-31 received CONNACK
Client mosqsub/28715-ip-172-31 sending SUBSCRIBE (Mid: 1, Topic: /broker/clients/active, QoS: 0)
Client mosqsub/28715-ip-172-31 received SUBACK
Subscribed (mid: 1): 0
Run Code Online (Sandbox Code Playgroud)
在 …