消息队列服务器是否应该直接面向 Internet?

Should a message queue server be facing the Internet directly or not?

我有以下用例:

我想知道的是:让系统接收消息如何更好?

A) 将消息队列服务器直接暴露给互联网,稍后处理消息以确保一致性/有效性(当然在服务器前面有一个负载平衡器)

B) 公开一个可以读取本机格式消息的服务器,应用一些基本的有效性检查,然后将消息排队到内部消息队列服务器

我倾向于第二种选择,但我没有关于它与第一种选择的优缺点的真正论据,所以你能就这个提出建议吗?

谢谢。

你的问题分为两部分:

  1. 是否将消息队列服务器对外公开
  2. 是否立即处理消息

对于第一个问题,我建议将服务器放在防火墙后面。因此,您将拥有更多工具来保护您的服务器免受 Internet 攻击。

第二个问题,取决于是否要求服务器将消息处理结果通知手机,以及消息处理结果是否应该立即知道:

  1. 如果您不需要向手机发送反馈并且不需要立即执行消息处理的结果,我建议记录消息然后以批处理模式处理它,
  2. 如果您需要向手机发回反馈但不需要立即处理消息,我建议对消息执行完整性检查,然后将反馈发回手机记录批处理消息,
  3. 否则,我会建议执行完整性检查、处理消息并将反馈发送回手机。

在我的建议中,我建议尽可能使用批处理模式而不是在线模式。当您在批处理模式下操作时,您有更多选择以简单的方式有效地使用您的计算资源。