2

我正在使用 zeromq、赛璐珞创建一个异步应用程序。我需要维护依赖于某些响应的不同任务的状态。我可以通过在响应参数中发送有关状态的数据来做到这一点。但是有没有更好的方法来做到这一点?

4

1 回答 1

0

使用唯一标识Conditions等待回复。

这个问题非常抽象/模糊,所以我会尽我所能给你一个功能性的例子。如果我理解/猜测正确,这就是你需要做的:

  1. 在发出请求之前生成UUIDwith 。Celluloid::Internals::UUID.generate
  2. 将请求数据打包,并UUID与数据一起发送。
  3. 创建一个Condition, 与之相关联UUID
  4. 发送请求。
  5. 处理请求,保持UUID与它的关联。
  6. 返回响应,UUID连同回复数据一起发回。
  7. 在通用(未说明)级别上处理响应......然后Condition用返回的数据发出信号,将 定位Condition在线程安全Hash的 byUUID中。
  8. 通过在所述对象中阻塞来接收您在所述对象中所需的数据......wait而不是直接处理响应。

声明的对象不应该知道0MQ哪个是设计无状态的......它应该与发出请求,接收响应并将响应传递给请求它的对象的层进行通信,而该声明的对象不会丢失其状态,并且没有在请求或响应中传递状态信息。


ECell即将推出的这一策略被大量使用。希望您已经在使用celluloid-zmqgem 来获得事件0MQ支持。

于 2015-09-21T13:12:27.553 回答