Java RabbitMQ RPC教程查询

Java RabbitMQ RPC教程查询,java,rabbitmq,rpc,Java,Rabbitmq,Rpc,我正在浏览RabbitMQ共享的教程 我假设下面的客户端代码 while(true) { var ea=(BasicDeliverEventArgs)consumer.Queue.Dequeue(); if(ea.BasicProperties.CorrelationId==corrId) { 返回Encoding.UTF8.GetString(ea.Body); } } 将接收队列上的所有消息,并将不必要地遍历未为其指定的消息。是他们的,我们可以避免,也就是说,我们可以修改客户端,使其只接收

我正在浏览RabbitMQ共享的教程

我假设下面的客户端代码

while(true)
{
var ea=(BasicDeliverEventArgs)consumer.Queue.Dequeue();
if(ea.BasicProperties.CorrelationId==corrId)
{
返回Encoding.UTF8.GetString(ea.Body);
}
}
将接收队列上的所有消息,并将不必要地遍历未为其指定的消息。是他们的,我们可以避免,也就是说,我们可以修改客户端,使其只接收用于它的消息

我打算通过RabbitMQ实现的基本工作是请求-响应模式,其中请求将由web服务接收,web服务将在队列中发送数据。数据对象将具有唯一的引用号。这将由异步tcp客户机接收,该客户机将根据接收到的消息在tcp/ip层上发送数据

在接收到来自tcp/ip异步通道的应答时,该通道将解析数据并使用相应的请求参考号在队列上进行响应


RPC方法非常适合它,但是共享的客户机代码有这个缺点,希望您能提供反馈。

事实上,我不太理解您的目的,但是当您创建RPC模型时,您必须创建一个“回复队列”,此队列仅绑定到客户机。 这意味着您将只接收回客户端消息,而不是所有消息。 由于Rabbitmq RPC模型是异步的,因此可以在不等待的情况下执行多个请求。响应和回复不能具有相同的发布顺序

关联id是将客户端请求与回复映射所必需的,因此不会出现不必要的“”消息


希望它能有所帮助

我真正想要的是声明一个队列,所有消费者都将在其中接收消息。我认为(我个人的意见)您想要构建它的属性不正确。也许有“路由键”的主题更好。RPC设计为具有经典RPC模型,但采用异步方式。