RabbitMQ java 客户端 RpcClient/RpcServer 示例

Posted

技术标签:

【中文标题】RabbitMQ java 客户端 RpcClient/RpcServer 示例【英文标题】:RabbitMQ java client RpcClient/RpcServer example 【发布时间】:2015-06-05 02:42:38 【问题描述】:

我是 RabbitMQ 的新手,我正在尝试实现一个 RpcClient 和 RpcServer 似乎很合适的应用程序。这就是应用程序的工作方式:当请求到来时,它会调用 RpcClient 将请求排入队列,然后等待响应。在服务器端,侦听器将请求出列并处理它,然后使用 RpcServer 入队。从理论上讲,这应该有效。我还在 Rabbit MQ 上找到了一个页面,该页面解释了如何通过使用直接回复来提高性能。https://www.rabbitmq.com/direct-reply-to.html。但是,我不知道如何应用它来使用 com.rabbitmq.client.RpcClient 和 com.rabbitmq.client.RpcServer 来实现我的应用程序。有人可以对此有所了解吗?谢谢!

【问题讨论】:

【参考方案1】:

com.rabbitmq.client.RpcClient 和com.rabbitmq.client.RpcServer 是两个方便的类,可以轻松实现 RPC 模式。

你也可以用标准类来实现它。

阅读post 和this(使用标准类)

【讨论】:

谢谢。我看了这两个班。但我不明白 RpcServer 如何知道要接收哪个请求。当创建 RpcClient 时,它是使用 exchange、routingKey ...等创建的。但是当创建 RpcServer 时,它需要 channel 和 queueName。但是 RpcClient 没有获取 queueName 的功能。并且没有一个 RpcServer 方法引用 RoutingKey。我迷路了。有人可以给我举个例子来说明它是如何工作的吗?如果我想为每个不同的routingKey创建一个RpcClient,并启动RpcServers根据routingKey进行处理,我该怎么做呢?谢谢!

以上是关于RabbitMQ java 客户端 RpcClient/RpcServer 示例的主要内容,如果未能解决你的问题,请参考以下文章

java rabbitmq 客户端在失去连接后怎么自动恢复

RabbitMQ/JAVA 客户端测试(补:利用线程)

用于Rabbitmq Stomp的java websocket客户端

RabbitMQ Java 客户端 - Java 依赖项(标准库?)

使用 rabbitmq 客户端 Java API 保证交付

从 Java 客户端中的多个 RabbitMQ 交换中读取,没有轮询