我有事件管理器进程将事件分派给订阅者(例如http_session_created,http_sesssion_destroyed)。如果使用Pid而不是命名进程,我必须将其放入函数中以使用事件管理器,但如果使用了Named进程,代码将更加清晰。
哪种变体是对的?
谢谢!
答案 0 :(得分:6)
虽然命名流程的流程没有实际差异,但注册流程会使流程全局化。从本质上讲,您告诉系统这是一个任何人都可以使用的全局服务。
从你的描述中听起来更像是你给他们起了名字,以节省你在循环中携带它们的小小的努力。如果是这种情况,我会将他们的pid放在一个记录中,其中包含您携带的所有其他状态数据。这更好地表明了流程的类型。
答案 1 :(得分:2)
如果您有一组固定的“订户”流程,请使用注册名称IMO。
相反,如果您有一个发布/订阅类型的架构,订户来去,那么您需要一个基础架构来跟踪这些,从这一点来说,如果您使用Pid()或名称并不重要
使用注册名称的一个缺点是您需要在代码库中跟踪它们以避免“冲突”。所以这取决于你:就个人而言,我倾向于支持命名流程,就像你说的那样,它使得阅读代码更加清晰。不管怎样,OTP并不关心。