代码之家  ›  专栏  ›  技术社区  ›  Mrugesh

如何有效管理两个ec2实例监听的队列事务

  •  0
  • Mrugesh  · 技术社区  · 6 年前

    我已经创建了两个ec2实例来监听一个特定的aws sqs队列。现在两个实例都通过负载均衡器连接。问题是,当两个实例都在同一个队列上侦听时,这两个实例不会同时接收到消息。如果同时接收到两个实例,如何防止事务的重复?

    1 回复  |  直到 6 年前
        1
  •  1
  •   John Rotenstein    6 年前

    您的架构没有描述amazon sqs的正常使用模式。

    amazon简单队列服务(sqs) 是一个排队服务,您可以在其中创建 队列 并发送 信息 排队。amazon sqs将消息保留长达14天。

    然后,应用程序可以请求 接收 队列中的消息。这就发出了信息 看不见的 而应用程序正在处理消息。一旦应用程序完成对消息的处理,就告诉SQL 删除 队列中的消息。如果应用程序在处理消息时失败,Amazon Sqs将发出消息。 看得见的 在一段时间之后,它可以被另一个应用服务器处理。

    注意事项:

    • 平方 不发送消息 . 相反,应用程序请求 接收 队列中的消息。把这些应用程序看作是“检索”一条消息,而不是sqs发送一条消息。
    • 检索消息的实例 不应坐在负载平衡器后面 . 在这个过程中没有任何东西被发送到负载均衡器。相反,实例本身连接到sqs并请求一条消息。
    • 如果希望同时向多个系统发送消息,可以使用 亚马逊简单通知服务(SNS) .