RabbitMQ RPC教程查询

我正在阅读由RabbitMQ在这里共享的教程

我假设下面的客户端代码

  while (true)
        {
            var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
            if (ea.BasicProperties.CorrelationId == corrId)
            {
                return Encoding.UTF8.GetString(ea.Body);
            }
        }

会收到队列中的所有消息,并且会不必要地遍历未指定给它的消息。 无论如何,我们可以避免它,也就是说,我们可以修改客户端,只接收仅用于它的消息。

我打算通过RabbitMQ实现的基本工作是请求 - 响应模式,其中请求将被网络服务接收,该服务将在队列中发送数据,该数据对象将具有唯一参考编号。 这将被一个异步tcp-client接收,它将根据它收到的消息在tcp / ip层发送数据。

在收到来自tcp / ip异步通道的回复时,通道将解析数据并使用相应的请求引用号回应队列。

RPC方法非常适合它,但共享的客户端代码有这个缺点可能会对此产生反馈。


其实我没有很好地理解你的目标,但是当你创建一个RPC模型时,你必须创建一个“回复队列”,这个队列只能绑定到客户端。 这意味着您将只收到客户端消息,而不是所有消息。 由于Rabbitmq RPC模型是异步的,因此您可以执行多个请求,而无需等待响应和回复不能具有相同的发布顺序。

相关ID对于将您的客户请求与回复进行映射是必要的,因此不会有“ 不必要的 ”消息

希望能帮助到你

链接地址: http://www.djcxy.com/p/61221.html

上一篇: RabbitMQ RPC tutorial query

下一篇: RPC using EventMachine & RabbitMQ