如何解决如何等待websocket在应用程序关闭时正常关闭?
我们有以下问题:
先决条件:
- Quarkus应用程序收到WebSockets连接
- Quarkus应用程序正在pod(Kubernetes)中运行
- WebSockets连接正在通过2个负载均衡器(elb,Nginx)的层,但是我们确保增加了空闲连接超时(300s)
- Websocket服务器必须等待连接关闭才能关闭
- 服务器的客户端没有重新连接机制
- 我们有一个关闭挂钩来等待WebSockets会话关闭
吊舱即将关闭的情况:
关闭挂钩:
void onStop(@Observes final ShutdownEvent ev) {
long numActiveSessions = getActiveSessions();
while (numActiveSessions > 0) {
try {
TimeUnit.SECONDS.sleep(waitforfinished);
} catch (InterruptedException e) {
return;
}
numActiveSessions = getActiveSessions();
}
}
有更好的方法吗?为什么我们收到GOING_AWAY原因? quarku在收到SIGTERM时会关闭WebSocket吗?
更新: 示例项目:https://github.com/pedrolopix/quarkus-websockets-example
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。