scala – 如果尝试写入不再存在的客户端,远程actor框架会做什么
我有一个使用远程执行器框架与多个客户端通信的服务器.如
this question年所述,我无法跟踪客户何时消失.因此,我的服务器仍然尝试向不存在的客户端发送消息.
这是一个问题吗? (我没有看到任何异常被抛出 – 但我认为如果我的服务器是长期存在会有内存问题) 解决方法
好的,我会冒险的东西在这里.
免责声明:尽管您将在下面阅读,您可能要start here. 我不熟悉斯卡拉,但它使用类似的原则对Erlang的,我觉得有点舒适.但是,令我困惑的是你的问题,与此无关.但是更多的是与您似乎正在建立的客户端 – 服务器关系. 根据定义,服务器不会继续向客户端发送消息,除非它收到请求.也就是说,服务器actor类应该在检查接收到的消息的情况下被构建(不一定总是),并相应地进行操作.因此,在这种情况下,客户端是现有的,服务器不应该担心它,而是通常发送其回复消息,因为客户端只是通过请求来感知其存在. 因此,如果您的服务器仍然尝试向客户端发送消息,尽管这些消息已被关闭,但在我看来,尽管没有收到请求,但是它仍然尝试发送消息.这在客户端 – 服务器关系的上下文中是根本错误的.服务器只能根据请求作出反应.否则它承担客户的角色. 无论如何,您可以(并且您应该)定义任何客户端 – 服务器对话的结束.这将有助于释放资源并结束已建立的连接.为此: >您的客户端actor应该向服务器发送一条停止消息,并以执行actor类的任何退出函数scala终止其执行. 这样,您可以确保所有参与者的正确终止以及资源的正确释放. 我希望这有所帮助.不幸的是我不熟悉scala本身.否则我可以引入一些代码.但上述链接应该有帮助,希望. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |