我有事件管理器进程将事件分派给订阅者(例如 http_session_created、http_sesssion_destroyed)。如果使用Pid而不是命名进程,我必须将它放入函数中以使用事件管理器进行操作,但如果使用命名进程,代码会更清晰。
哪个变体是正确的?
谢谢!
我有事件管理器进程将事件分派给订阅者(例如 http_session_created、http_sesssion_destroyed)。如果使用Pid而不是命名进程,我必须将它放入函数中以使用事件管理器进行操作,但如果使用命名进程,代码会更清晰。
哪个变体是正确的?
谢谢!
虽然命名进程的进程没有实际区别,但注册它使其成为全局的。您实质上是在告诉系统,这是一项任何人都可以使用的全球服务。
根据您的描述,听起来更像是在给它们命名以节省在循环中携带它们的微小努力。如果是这种情况,我会将他们的 pid 与您随身携带的所有其他状态数据一起记录在案。这更好地表明了进程的类型。
如果您有一组固定的“订阅者”进程,则使用注册名称 IMO。
相反,如果你有一个发布/订阅类型的架构,订阅者来来去去,那么你需要一个基础设施来跟踪它们,从这一点开始,使用 Pid() 或名称并不重要。
使用注册名称的缺点之一是您需要在代码库中跟踪它们以避免“冲突”。所以这取决于你:就个人而言,我倾向于使用命名进程,就像你说的那样,它使阅读代码更清晰。无论如何,OTP 不在乎。