使用RabbitMQ同步远程服务器事务

使用RabbitMQ同步远程服务器事务,rabbitmq,Rabbitmq,我在几个远程服务器上安装了Rails应用程序。Rails应用程序生成金融事务,我希望所有远程服务器都将这些元数据发送到一个中央集线器,并将其存储在关系数据库中。事务上可能还有其他处理任务。这些服务器不在我的控制之下,因此我无法保证与互联网的持续连接。他们每天将至少连接到互联网几个小时 RabbitMQ对这种体系结构有用吗?Exchange和队列将安装在远程服务器上(与Producer Rails应用程序一起),对吗?我会为每个远程服务器提供一个使用者服务,还是为所有远程服务器/队列提供一个中央使

我在几个远程服务器上安装了Rails应用程序。Rails应用程序生成金融事务,我希望所有远程服务器都将这些元数据发送到一个中央集线器,并将其存储在关系数据库中。事务上可能还有其他处理任务。这些服务器不在我的控制之下,因此我无法保证与互联网的持续连接。他们每天将至少连接到互联网几个小时

RabbitMQ对这种体系结构有用吗?Exchange和队列将安装在远程服务器上(与Producer Rails应用程序一起),对吗?我会为每个远程服务器提供一个使用者服务,还是为所有远程服务器/队列提供一个中央使用者服务

既然我是拉比世界上的一个无名小卒,还有额外的问题:

  • 我需要在远程计算机上打开哪个端口,以便我的使用者可以使用队列中的数据
  • 我会使用直接交换,对吗
  • 在被消费之前,队列中可以累积多少消息?如果远程服务器在几天内没有连接到internet(最坏的情况),是否有可能出现问题

  • 由于系统的严重断开连接(我认为这不是AMQP系统的典型用途),以及您可能一天只需要推几次,我想知道您是否最好跳过整个AMQP/RabbitMQ任务,而是使用一个计划任务直接写入本地数据库,以便在夜间将该数据推送到中央服务器

    请记住,RabbitMQ是一种具有存储消息固有能力的消息代理服务,而不是一种消息存储服务。该服务的主要目的是断开消息与发布系统的连接,并将消息推送到需要的地方,通常是以实时方式。另一方面,数据库当然是一个存储系统,有很多选项可以以非实时方式推送数据

    话虽如此,这里有一些关于RabbitMQ的想法:

    首先,一些上下文可能会有所帮助:我们不知道您的rails服务器每天处理并想要推送多少事务。一天一个?每天一百万

    关于队列中的积压消息:RabbitMQ(显然)具有很强的可伸缩性,我认为这对于消息服务本身来说不应该是一个问题(以下是他们网站上关于如何管理队列的一些信息:)

    可用内存和硬盘空间(正确配置时)应该是限制您可以加载到队列中的消息数量的因素

    关于使用者设置,我不认为有任何理由不能让中央服务连接到各种RabbitMQ服务器。当然,您需要运行单独的连接和通道(并且您可能希望运行几个实例来帮助循环传入消息)


    关于交换类型:Direct似乎适用于此,是的。

    谢谢您的回复。我认为RabbitMQ vs数据库的另一个原因是个人偏好。如果我进入数据库同步,那么我需要成为一名数据库专家。我是一名应用程序工程师,我宁愿我知道RabbitMQ,它属于应用程序领域。此外,我认为我对数据有更多的控制权。也许我会在处理的时候把它切碎。不管怎么说,我每天要处理大约数万笔交易。。。元数据在每个事务1kb的范围内。这将是一个非常简单的数据库使用。作为一名有抱负的应用程序工程师,您至少应该有一点数据库经验(绝大多数应用程序不都使用数据库吗?)。如果你因个人喜好而做出错误的选择,你仍然在做出错误的选择。同样,我建议不要使用RabbitMQ方法(现在我看到了您的事务计数和有效负载,更是如此)。