问题描述
环境信息
- EMQ X 版本:4.3
- 操作系统及版本:centos7
- 其他
我用java编写的构造程序,已经启动,能接受到emqx的消息了,
现在测试遇到一个问题:
1.我停掉我们钩子服务后,emqx不能自动重新连接我们的钩子服务,哪里要配置吗?
2.我们用构造程序校验权限,不通过将设置结果为error了,然终端还是能连接
代码片段如下:
@Override
public void onClientAuthenticate(ClientAuthenticateRequest request, StreamObserver<ValuedResponse> responseObserver) {
//DEBUG("onClientAuthenticate", request);
log.info("onClientAuthenticate:{}", gson.toJson(request));
ClientInfo clientInfo = request.getClientinfo();
Result result = deviceConnectService.doLogin(clientInfo.getClientid(),clientInfo.getUsername(),clientInfo.getPassword());
ValuedResponse reply ;
if(result.isSuccess()){
reply = ValuedResponse.newBuilder().setBoolResult(true).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}else{
reply = ValuedResponse.newBuilder().setBoolResult(false).build();
}//
}
钩子服务断开不能重连问题:
1.直接手动关闭钩子服务,在重启可以重连
2.在我们压测时,钩子服务挂了,后来重新启动钩子服务不能重连
构造程序校验权限问题:
就是重写了onClientAuthenticate
,程序代码都到了
else{
reply = ValuedResponse.newBuilder().setBoolResult(false).build();
}
,按照道理应该是认证不通过了就不应该连接了吧?
你那要的日志是哪个?
erlang.log.1,run_erl.log,emqx.log.5
非常感谢!
@heeejianbo 日志看起来是钩子超时了,重连机制是?
哪里可以设置重连机制?一般应该是:接到一条我们自己服务报错了,那么后面的消息应该不会影响吧;目前看要是我们一个地方报错,后面的消息都接不到我们钩子服务了
第一个问题:我们构造程序鉴权了,返回消息也给false了,但是终端还是可以登录,不知道哪里出问题了,代码如下:
@Override
public void onClientAuthenticate(ClientAuthenticateRequest request, StreamObserver<ValuedResponse> responseObserver) {
//DEBUG("onClientAuthenticate", request);
log.info("onClientAuthenticate:{}", gson.toJson(request));
ClientInfo clientInfo = request.getClientinfo();
Result result = deviceConnectService.doLogin(clientInfo.getClientid(),clientInfo.getUsername(),clientInfo.getPassword());
ValuedResponse reply ;
if(result.isSuccess()){
reply = ValuedResponse.newBuilder().setBoolResult(true).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}else{
reply = ValuedResponse.newBuilder().setBoolResult(false).build();
}//
}
第二个问题:构造服务报错,后续的消息就接不进来了
A1: ValuedResponse
有个 type
属性,设置为 STOP_AND_RETURN
在试试
A2:试试看,假如重启了 Java 的 钩子服务,看看 EMQ X 会成功重连吗?
1 个赞
看上面图的日志,是请求Java 的 gRPC 报告 timeout
了。
有没有这段时间的具体日志,特别是钩子服务完成重启时,emqx 的日志
2.在我们压测时,钩子服务挂了,后来重新启动钩子服务不能重连