错误报告
环境
- EMQX 版本:4.4.10
- 操作系统版本:centos7
重现此问题的步骤
- xxx
- xxx
- xxx
当然是可以的。订阅信息在集群节点间是共享的。
A,B实例组成集群,客户端1连接A实例并订阅主题$share/back/p7/#,客户端2连接B实例并向主题p7/dwon中发消息,客户端1没收到消息测试了几次,只有客户端2也连接A实例发消息才能被客户端1收到
2023-01-11T14:01:45.146585+08:00 [info] back2_1673415402000@183.17.228.201:41664 PUBLISH to p7/down: <<“{\n "msg": "hello"\n}”>>
我在A,B实例都开启 Topic 日志追踪,然后客户端2向主题发消息,只有B实例出现上面日志,A实例没有日志,我客户端连接的时候都使用的是A、B实例的Ip,而不是nginx的,是不是客户端连nginx所在ip才能实现订阅共享,因为nginx负载到A、B两台实例
./bin/emqx_ctl cluster status
你执行这个命令看看集群是否成功。
是成功的,很奇怪,如果我用java客户端连服务器,必须要使用nginx地址,主题才能共享,但我用你们管理后台工具里面的websocket连接,直接使用A,B实例的IP去连接主题是能共享的。
可以共享,除了java客户端
emqx-4.4.10-otp24.1.5-3-el7-amd64.rpm安装后,服务器消息持久化在哪个目录呀
开源版目前未提供消息持久化功能。
但开源版不是也能发消息么,如果要保证qos的1和2等级,客户端和服务器应该会将消息存在磁盘或内存吧,还是说开源版发送消息qos等级只能为0
开源版会把消息缓存在内存中的。
但我使用java客户端持久化选择MqttDefaultFilePersistence,没报错,且发消息也成功了
这是在客户端侧的消息持久化,或者说是在会话过期前的持久化。
EMQX 同样支持持久会话,支持开源版的实现是基于内存的,只要 EMQX 不停止运行,你就可以正常使用持久会话的所有能力。
我懂你意思了,你们开源emqx服务端侧不支持磁盘持久化,但客户端内存和磁盘持久化都行
是的