Comments (6)
所以在飞窗里的消息还会重发吗
当前版本 EMQX,飞行窗口中的消息会重发,但是只有在客户端在线的情况下。
飞行窗口中重发消息的行为是违反协议的,在 5.8 中会修复:#13080
from emqx.
你好。
如果从 EMQX 的控制台上看到消息已经发送到飞行窗口了。那么应该需要调查客户端为什么没有收到消息或者更大的可能是已经收到了但是没有处理。
如果客户端连上了还没订阅就收到消息,那么可能是 clean-start=false。
这种情况客户端是不需要重新订阅的,因为订阅都存在会话状态中了。
from emqx.
你好。 如果从 EMQX 的控制台上看到消息已经发送到飞行窗口了。那么应该需要调查客户端为什么没有收到消息或者更大的可能是已经收到了但是没有处理。
如果客户端连上了还没订阅就收到消息,那么可能是 clean-start=false。 这种情况客户端是不需要重新订阅的,因为订阅都存在会话状态中了。
感谢您的恢复。
是的,我们设置的clean-start=false,会保持会话。所以会造成"客户端连上了还没订阅就收到消息",但是此时我们的listener还没有注册上来。
代码逻辑如下,client在连接的时候,延迟注册listener
public static void main(String[] args) throws Exception {
MqttSubscribe subscribe = new MqttSubscribe();
subscribe.connect("emqx_test_subscribe_10");
new Thread(() -> {
try {
//延迟 20s
Thread.sleep(10 * 1000);
// 订阅
MqttSubscription mqttSubscription = new MqttSubscription("testtopic10/10/#", 1);
System.out.println(simpleDateFormat.format(System.currentTimeMillis()) + "subscribe");
subscribe.client.subscribe(new MqttSubscription[]{mqttSubscription}, new IMqttMessageListener[]{new DefaultIMqttMessageListener()});
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}).start();
}
void connect(String clientId) throws Exception {
MemoryPersistence persistence = new MemoryPersistence();
String broker = "xxxxx";
client = new MqttClient(broker, clientId, persistence);
// MQTT 连接选项
MqttConnectionOptions connOpts = new MqttConnectionOptions();
connOpts.setUserName("test");
connOpts.setPassword("test".getBytes());
// 保留会话
connOpts.setCleanStart(false);
connOpts.setSessionExpiryInterval(7200L);
//自动重连
connOpts.setAutomaticReconnect(true);
// 建立连接
System.out.println("Connecting to broker: " + broker);
client.connect(connOpts);
}
from emqx.
所以在飞窗里的消息还会重发吗
from emqx.
但是此时我们的listener还没有注册上来
我不太理解什么是你们 listener。
- 如果客户端首次连接然后订阅, 那么这是一个 “新建一个订阅” 的请求
- 如果客户端重练,老的session还在EMQX里,那么连上之后就会立刻收到离线期间累积的消息。然后 20s 之后发送的那个订阅请求相当于是“修改原来的订阅的意思“。
from emqx.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
from emqx.
Related Issues (20)
- SSL listener's check for "CA Cert" HOT 5
- The statistics of disconnection reasons do not include malformed packets HOT 3
- Clearer disconnection reasons
- Add "topic_subscribe_filter" field to JWT ACL (or some acl behavior like this) HOT 21
- Add curl to docker image HOT 5
- 消息重传机制只会在重连的时候触发么 HOT 3
- api/v5/prometheus/stats not have erlang_vm_* 指标没了吗? HOT 3
- runq_overload alert on using MongoDB for authz/authn and also alert gets stuck for days sometimes HOT 9
- Helm Chart: MQTT ingress proxies HTTP to MQTT port HOT 4
- docker can't pull emqx:5.7.0 HOT 3
- Connect to ws emqx and the respons is 400 bad request HOT 1
- The client is powered off, but one month later EMQX still shows that the client is connected HOT 3
- bad_cert,hostname_check_failed HOT 5
- Plugin hook points not called when auto-booting plugin in a cluster HOT 5
- The retained message function in EMQX is controlled by two switches
- emqx_authn_pgsql resource down: unknown reason HOT 7
- Setting hibernate_after for tcp connection HOT 2
- Return wrong Receive Maximum
- The message queue size may exceed the maximum limit after setting topic priority HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from emqx.