我有一个由两个节点组成的现有系统,一个客户端/服务器模型。 我想用RabbitMQ在它们之间交换消息。即客户端将其所有请求发送到RabbitMQ,服务器将无限期地侦听队列,使用任何到达的消息然后对其进行操作。
我可以根据需要更改服务器,但问题是,我无法更改客户端的行为。如何将响应发送回客户端?
客户端节点了解HTTP请求/响应,在将其他应用服务器直接配置到RabbitMQ而不是我的应用程序后,我该怎么办。
答案 0 :(得分:0)
您可以使用RPC model或某些内部约定,例如将结果存储在具有已知ID的数据库(或缓存)中,并在一个周期内轮询存储以获取该结果
答案 1 :(得分:0)
您必须在中间使用代理服务器,它将节点1(您无法更改的客户端)视为实际服务器,而它只是将请求注入排队服务器。您还必须使用2个队列。
为清楚起见,让我们列举一下系统播放器:
可能的工作方案:
这可能有效,但很少会出现问题,例如:因为代理服务器不知道实际服务器何时响应,并且,它无法确定输出队列中的响应顺序,它可能必须重新注入它找到的与输出队列无关的消息,直到它找到正确的信息。
或者,代理服务器可能需要稍后通过HTTP请求将响应提供给客户端。也就是说,客户端不会对客户端的请求做出响应,而是对其发送的请求没有响应,因为它知道稍后将通过代理服务器的请求获得答案。
我不知道你的情况,但这可能会奏效!