使用Nirvana(http://my-channels.com/)或其他面向消息的中间件,在延迟,可扩展性和安全性方面,实现经典RPC(一个请求 - 一个响应)的最佳方法是什么?
答案 0 :(得分:0)
通常的模式是使用相关ID(例如GUID)在消息传递平台上实现请求/响应语义。
每个请求都附加了一个新的Guid,一个服务器端,创建的响应具有附加到其上的请求的guid。
例如,在客户端上,假设我们有一个messageBus实例,使用publish()方法将数据发送到总线,并使用OnNext()方法从总线中异步接收数据,然后我们可以将messageBus包装起来在和IObservable中,写下以下内容:
function DataItem GetReqResp(QueryItem q)
{
q.Guid = Guid.NewGuid();
messageBus.Publish(q);
return messageBus.Where(n => n.Guid == q.Guid).Take(1);
}