1
请问如果我希望代码只运行在一个进程,当收到数据后,再通知其他的进程,例如:监听数据库的通知等等,这种情况我该什么地方来写只运行在一个进程上的代码呢?现在是写在了schedule定时器的目录下,但我觉得这并不是最好的选择,请问大家有什么好的办法吗?谢谢。
请问如果我希望代码只运行在一个进程,当收到数据后,再通知其他的进程,例如:监听数据库的通知等等,这种情况我该什么地方来写只运行在一个进程上的代码呢?现在是写在了schedule定时器的目录下,但我觉得这并不是最好的选择,请问大家有什么好的办法吗?谢谢。
使用 Agent 进程
@JasinYip 非常感谢您的回复 嗯嗯 我最开始也是用的Agent进程,但是因为我需要只在一个进程中运行的代码还挺多的 不知道这样污染和占用Agent进程是否合适,
Agent 本身就是被设计为可以执行少量业务代码的,如果你确实有大量需要进行的计算,应该通过 IPC 转交给 Worker 来进行。Agent 应该就是做一些像你提到的监听数据库通知等操作。
嗯嗯 如果不通过IPC 而是通过pub\sub 通知给worker进程可以的吗?另外pub\sub可以只通知一个工作进程吗?
看你自己的业务场景判断吧
我理解是不可以,硬要做就得自己实现封装一个,在订阅和发布的 info JSON 上动手脚。以保证发广播时只有一个进程响应
好的 那还是先用IPC吧 我也觉得在JSON上做手脚不太好。