【发布时间】:2015-05-21 06:27:24
【问题描述】:
我正在阅读 RabbitMQ here 分享的教程
我假设下面的客户端代码
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
if (ea.BasicProperties.CorrelationId == corrId)
{
return Encoding.UTF8.GetString(ea.Body);
}
}
将接收队列中的所有消息,并将不必要地遍历未指定给它的消息。无论如何我们可以避免它,即我们可以修改客户端以仅接收仅用于它的消息。
我打算通过 RabbitMQ 实现的基本工作是请求响应模式,其中 Web 服务将接收请求,该请求将在队列中发送数据,数据对象将具有唯一的参考号。这将由异步 tcp 客户端接收,该客户端将根据收到的消息在 tcp/ip 层上发送数据。
在接收到来自 tcp/ip 的异步通道的回复时,通道会解析数据并在队列中回复相应的请求参考号。
RPC 方法非常适合它,但共享的客户端代码有这个缺点,希望得到反馈。
【问题讨论】: