我正在使用 zeromq、赛璐珞创建一个异步应用程序。我需要维护依赖于某些响应的不同任务的状态。我可以通过在响应参数中发送有关状态的数据来做到这一点。但是有没有更好的方法来做到这一点?
问问题
154 次
1 回答
0
使用唯一标识Conditions
等待回复。
这个问题非常抽象/模糊,所以我会尽我所能给你一个功能性的例子。如果我理解/猜测正确,这就是你需要做的:
- 在发出请求之前生成
UUID
with 。Celluloid::Internals::UUID.generate
- 将请求数据打包,并
UUID
与数据一起发送。 - 创建一个
Condition
, 与之相关联UUID
。 - 发送请求。
- 处理请求,保持
UUID
与它的关联。 - 返回响应,
UUID
连同回复数据一起发回。 - 在通用(未说明)级别上处理响应......然后
Condition
用返回的数据发出信号,将 定位Condition
在线程安全Hash
的 byUUID
中。 - 通过在所述对象中阻塞来接收您在所述对象中所需的数据......
wait
而不是直接处理响应。
声明的对象不应该知道0MQ
哪个是设计无状态的......它应该与发出请求,接收响应并将响应传递给请求它的对象的层进行通信,而该声明的对象不会丢失其状态,并且没有在请求或响应中传递状态信息。
ECell
即将推出的这一策略被大量使用。希望您已经在使用celluloid-zmq
gem 来获得事件0MQ
支持。
于 2015-09-21T13:12:27.553 回答