【发布时间】:2016-01-23 21:03:00
【问题描述】:
我正在编写一个带有主管树的 OTP 应用程序。
主监督者监督两个进程,一个工人 QueueAddress 和另一个监督者 QueueManager,策略为one_for_one
QueueManager 监管一堆小队列,策略为simple_one_for_one,每启动一个新队列,其基本信息都会保存到QueueAddress中。
如果一个队列被杀死,它会被正确地重新启动。
现在我想测试如果主管 QueueManager 被杀死会发生什么。
但是,如果只是发送消息 Process.exit(QueueManager, :normal) 或 Process.exit(QueueManager, :shutdown) 没有任何反应,则 QueueManager 的 PID 和受监督的小队列的 PID 都不会改变。
如果我发送消息Process.exit(QueueManager, :kill),整个应用程序都会崩溃。
我如何测试,如果 QueueManager 被杀死会发生什么?
在OTP树的图片下,我要杀Elixir.QueueManager
【问题讨论】:
-
不是 Process.exit/2 仅适用于 pids 吗?您可以尝试执行类似 name |> Process.whereis |> Process.exit(:normal) 的操作
标签: elixir erlang-otp