【发布时间】:2020-05-01 10:30:38
【问题描述】:
我有一个特定的功能需求,需要将所有等待消息从 SQS 累积到我的 apache camel 组件并在其中编写业务逻辑。
我正在使用两个带有单个负载均衡器的 ec2 实例。
假设如果我向队列发送 100 条消息。在 100 条消息中,x 条消息将发送到实例 A,并且 (100-x) 条消息将发送到实例 B。因此,我无法在单个实例中累积所有 100 条消息。
有什么办法,我可以将 SQS 消息发送到特定的 EC2 仅实例
或
我可以将消息从一个 EC2 发送到另一个 EC2 实例。注意:两者 EC2 实例在同一个端口上运行。
【问题讨论】:
-
两个实例都在获取消息?如果只有一次实例应该读取它们,为什么第二个实例也会拉它们?
-
另一个实例正在拉取 100 条消息中的其他消息。
-
这不是一个很好的设计。你能放一个 lambda 来隔离队列吗?所有消息都会发送到 lambda,而 lambda 只会将消息发送到实例 1 的新队列,而其他消息只会发送到第二个实例的新队列。
-
好的。那么你的意思是我们可以为实例 1 分配一个队列吗?
-
如果可能的话,这值得考虑。在这种情况下,原始 SQS 队列被 lambda “拆分”为两个新的 SQS 队列。 lambda 会将消息转发到第一个或第二个新队列。这样每个实例都有自己的队列,只有它应该处理的消息。
标签: java amazon-web-services amazon-ec2 apache-camel amazon-sqs