使用Nirvana(或其他MOM中间件),实现RPC的最佳方法是什么?

时间:2011-05-27 19:16:51

标签: messaging rpc middleware

使用Nirvana(http://my-channels.com/)或其他面向消息的中间件,在延迟,可扩展性和安全性方面,实现经典RPC(一个请求 - 一个响应)的最佳方法是什么?

1 个答案:

答案 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);
}