我想协调告诉服务器B从服务器A启动进程,然后在完成时,在服务器A上运行导入脚本。我很难弄清楚我应该如何正确使用SQS在这种情况下。
服务器A:主专用服务器 服务器B:云处理服务器
这是应该如何使用SQS还是我完全忽略了这一点?
答案 0 :(得分:3)
我很遗憾亚马逊提供SQS服务。它不是一个“简单的队列”,可能不是你的最佳选择。具体来说:
好消息是它可以很好地扩展。但是猜猜看,你没有规模问题,因此处理SQS的古怪行为只会让你痛苦无缘无故。我强烈建议您查看RabbitMQ,它的行为与您想要一个简单的队列行为完全相同。
答案 1 :(得分:1)
嗯...... SQS不支持消息路由,为了向服务器A或B分配消息,说明为什么有一个可用的解决方案:创建SNS主题“服务器a”和“服务器b”。这些主题应该将消息发送到您的应用程序将提取的SQS。此外,它还可以实现Web挂钩 - SNS事件上的订阅者,它将分析消息并对您的应用程序进行回调。
答案 2 :(得分:1)
你所提出的内容在理论上是有效的,但是我不再将消息直接放入队列中,而是将这些消息放入SNS主题中,然后将队列订阅到主题中以获取它们 - 为您提供更多信息在不触及代码或生产中的服务器的情况下,可以灵活地改变事物。
对于您现在正在做的事情,SNS部分是不必要的,但使用将允许您更改功能而无需接触现有的服务器。
例如:需要更改并且您希望添加一个进程C,每当“启动进程”在Sever B上运行时也会启动。通过AWS SNS控制台,您可以将消息的第二个副本指向另一个队列以前不存在,并设置从该队列轮询的服务器C(扇出模式)。
此外,我在初始推出期间经常喜欢的是向SNS添加通知,所以我知道发生了什么,即每次“启动过程”事件发生时,我都会将手机(或电子邮件地址)订阅到主题所以我得到通知 - 我可以实时监控发生了什么(或不发生)。一旦生产部署完成一段时间后,我就可以进入AWS控制台,只需从过程中取消订阅我的电子邮件/单元 - 无需每次都接触任何服务器或代码。