首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前几条消息在传输到离线的mqtt客户端时丢失

前几条消息在传输到离线的mqtt客户端时丢失
EN

Stack Overflow用户
提问于 2021-06-15 17:25:06
回答 1查看 50关注 0票数 0

我有使用paho mqtt库的vernemq服务器和mqtt客户端(使用python或C-不要紧)。订阅服务器和发布服务器都使用Qos2和clean_session == False。所以问题是,当订阅者离线时,我会尝试发送一些消息。他们中的一些人迷路了。仔细研究参数后,我发现第一个max_inflight_messages丢失了。我的意思是。在配置文件vernemq.conf中,我设置了max_inflight_messages = 20 (默认情况下)。然后subscriber转到离线,我发送了21条消息,然后subscriber上线,前20条丢失,21条发送。我用不同数量的消息尝试了很多次-同样的结果,前20条消息丢失,21条消息和下一条消息被接收。当我尝试max_inflight_messages = 1时,第一条消息丢失,其他消息被接收。有什么想法吗?我的文件vernemq.conf:

代码语言:javascript
复制
allow_anonymous = on
allow_register_during_netsplit = off
allow_publish_during_netsplit = off
allow_subscribe_during_netsplit = off
allow_unsubscribe_during_netsplit = off
allow_multiple_sessions = off
coordinate_registrations = on
max_inflight_messages = 20
max_online_messages = 1000
max_offline_messages = 1000
max_message_size = 0
upgrade_outgoing_qos = off
listener.max_connections = 10000
listener.nr_of_acceptors = 10
listener.tcp.default = 0.0.0.0:1883
listener.vmq.clustering = 0.0.0.0:44053
listener.http.default = 0.0.0.0:8888
systree_enabled = on
systree_interval = 20000
graphite_enabled = off
graphite_host = localhost
graphite_port = 2003
graphite_interval = 20000
shared_subscription_policy = prefer_local
plugins.vmq_passwd = off
plugins.vmq_acl = on
plugins.vmq_diversity = off
plugins.vmq_webhooks = off
plugins.vmq_bridge = off
metadata_plugin = vmq_plumtree
vmq_acl.acl_file = ./etc/vmq.acl
vmq_acl.acl_reload_interval = 10
vmq_passwd.password_file = ./etc/vmq.passwd
vmq_passwd.password_reload_interval = 10
vmq_diversity.script_dir = ./share/lua
vmq_diversity.auth_postgres.enabled = off
vmq_diversity.postgres.ssl = off
vmq_diversity.postgres.password_hash_method = crypt
vmq_diversity.auth_cockroachdb.enabled = off
vmq_diversity.cockroachdb.ssl = on
vmq_diversity.cockroachdb.password_hash_method = bcrypt
vmq_diversity.auth_mysql.enabled = off
vmq_diversity.mysql.password_hash_method = password
vmq_diversity.auth_mongodb.enabled = off
vmq_diversity.mongodb.ssl = off
vmq_diversity.auth_redis.enabled = off
vmq_bcrypt.pool_size = 1
log.console = both
log.console.level = debug
log.console.file = ./log/console.log
log.error.file = ./log/error.log
log.syslog = off
log.crash = on
log.crash.file = ./log/crash.log
log.crash.maximum_message_size = 64KB
log.crash.size = 10MB
log.crash.rotation = $D0
log.crash.rotation.keep = 5
nodename = VerneMQ@127.0.0.1
distributed_cookie = vmq
erlang.async_threads = 64
erlang.max_ports = 262144
leveldb.maximum_memory.percent = 70
EN

回答 1

Stack Overflow用户

发布于 2021-06-16 19:48:13

问题出在paho mqtt库中。当客户端连接到代理时,他会接收所有消息,但只有当消息被分配到具体主题时,才会分配此消息的处理程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67983576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档