在特定时间内从其他独立处理程序通知控制器操作方法

时间:2018-12-18 12:03:56

标签: asynchronous events notifications elixir

我有一种情况需要等待设备的响应(使用mqtt代理,这在当前问题的上下文中无关紧要)。

只要我在一个特定端点上获得API调用

  • 我需要等待(2-5秒,视需要而定)以等待其他处理程序(mqtt handler => https://github.com/gausby/tortoise)上设备的响应
  • 此处理程序需要以某种方式通知我有关特定设备ID的此味精(如果处理程序在这段时间内收到了味精)
  • 如果设备匹配并且控制器操作方法得到通知,我们将发送成功响应,否则我们将发送失败响应
  • 在等待时间之前或之后收到的任何味精都无关紧要(只需考虑将其取消订阅)

我不太确定实现上述要求的最佳方法是什么。欢迎任何帮助,谢谢

1 个答案:

答案 0 :(得分:0)

spawn()第一个处理程序的进程。在第一个处理程序中,spawn()的另一个过程是第二个处理程序将self()作为参数之一传递的。然后输入receive中指定的具有2-5秒超时的after clause子句。让第二个处理程序send()向第一个处理程序发送一条消息,告知第二个处理程序获取的数据。

如果第一个处理程序中的receive超时,则执行after子句中您想做的一切,如果receive在超时之前读取一条消息,则执行无论您需要处理什么数据。

然后,如果让运行第一个处理程序的进程终止,则不必担心其邮箱中的垃圾消息。