Rabbitmq 发送什么数据作为消息

Rabbit MQ What data to send as a Message

我将使用 RabbitMQ 集成一些应用程序。现在我面临设计问题。现在我有一个应用程序生成消息和一个应用程序使用它(将来可能有更多)。这两个应用程序都可以访问某些数据库。应用程序 A 是某种注册应用程序,当它收到注册请求时,它会向 rabitmq 发送消息。现在应用程序 b 收到此消息,其任务是将注册数据加载到 elasticsearch 服务器。现在我有一些选择

  1. consumer会从q读取message和id并加载数据发送给elasticsearch server 最快的吞吐量。因为事物将以异步方式移动。其他进程可能 运行 单独 服务器将加载数据并发送到弹性服务器

  2. 消费者会从q中读取消息和id,然后调用rest服务加载公司数据。 将需要更多时间来处理每个请求,因为它将拥有网络 overhead.although 这将节省数据加载时间 但会增加网络延迟。它也会绕过 ESB(消息代理)。 (我个人认为如果我在我的应用程序中使用 esb 我没有必要在每个方法调用中都使用它)

  3. 发送消息中的所有注册数据。消费者将收到它并将其上传到 elasticsearch 服务器。

我应该遵循哪种方法?

显然,您的应用程序设置中有许多组件很难考虑在内,因此建议一个简单的答案。我建议您查看每个设计并确定 I/O 点、网络调用和网络交换的数据量。然后根据您期望的负载和您希望随时间存储 的数据量,我建议您对这些瓶颈进行分级,根据其严重程度给出更高的分数。确定得分最低的一个解决方案并使用它。

我建议您应该对仅发送 iq 或发送整个对象之间的区别进行基准测试。我希望差异可以忽略不计。

一个建议。让你的对象不可变。它与您所描述的内容没有直接关系,但在像您这样的情况下,组件正在运行 "blindly" 您会发现知道对象没有改变状态是一个很大的保证。