如何将多台机器的PATCH http请求同步到一台机器



我在两台不同的机器上(比如A和B(有相同的骆驼式休息api,最后两台不同机器(A和B来自通用应用服务器(C(。(这是针对A和B的常见ID,比如10(

我所处的情况是,我必须同步来自A和B的请求,或者一次只处理一个请求,一旦完成,另一个请求就应该启动。

以下是我尝试过的:

机器A和B有共同的数据库,所以我尝试将请求A的ID存储在数据库中,并检查是否存在相同的ID。一旦A完成,它的处理ID将从数据库中删除,B将在此时检查它不会获得ID,并启动它的进程。

不幸的是,我尝试的解决方案似乎没有达到目标,如果你能提出一些解决方案,那就太好了。

PS:我使用的是骆驼路线的这里,在执行更新之前执行多次获取请求所以我想在等待中发出1个请求,这无法通过同步实现,因为机器A和B不同。

到目前为止,没有这样的代码可以粘贴

谢谢,

您可以通过将数据收集与JMS队列的更新操作解耦来"同步"此场景。A和B正在收集所需的数据,并最终将更新请求作为JMS消息生成到同一队列中。

C(或其他人(正在消耗消息,只是针对C.进行更新请求

此异步解决方案意味着A和B不需要针对更新请求的同步响应

这从根本上改变了错误处理。您必须在使用者端处理更新错误。当A和B成功地在队列中丢弃更新请求时,他们不再负责。如果稍后发生错误,则不会通知他们。因此,您需要验证A和B上的数据,如果数据不足以进行更新,则拒绝请求。

另一方面,当C关闭时,您可以处理A和B上的请求。他们不在乎,只要经纪人可以删除消息。当C再次启动时,它可以处理排队的消息。

在使用者端严格同步,只需使用一个使用者

如果您使用支持消息组的JMS代理(例如ActiveMQ(,您甚至可以调整此场景。假设您只需要为具有相同ID的请求进行同步。在这种情况下,您将ID设置为JMSXGroupID。然后,您可以随心所欲地使用消费者,并且代理会注意对同一ID的所有请求都由同一消费者处理(因此是同步的(。

最新更新