在 Mule 服务器之间使用来自 S3 平衡的对象

Consume objects from S3 balancing between Mule servers

场景是这样的:

问题:

愿望清单:

失败的方法:

问题:

这是场景的架构:

配置您的 S3 存储桶以将事件推送到 SQS 队列(请参阅 here),并让您的 mule 服务器从该队列中拉取事件,而不是轮询 S3。这样,每个事件将仅由一名工作人员拉取。

其工作原理如下:在每个worker中,需要反复调用ReceiveMessage()获取队列中的下一条消息。一旦一个工作人员收到一条消息,该消息将在一定时间内对其他工作人员不可见(您可以通过 setVisibilityTimeout() 控制)。工作人员处理一条消息后,它应该调用 deleteMessage() 将其从队列中完全删除。如果 worker 发生故障,deleteMessage() 不会被调用,因此在可见性超时期限后,另一个 worker 将接收该消息。

换句话说,SQS 中的队列不处理分配工作。工作人员在准备就绪时从队列中拉取消息,这就是创建负载平衡的原因。