【问题标题】:Debugging Amazon SQS consumers调试 Amazon SQS 使用者
【发布时间】:2013-02-28 10:01:46
【问题描述】:

我正在使用连接到分布式后端的 PHP 前端,使用 Amazon SQS 和各种消息类型和消息使用者。我试图想出一种方法来安全地调试这些消费者,因为我们不希望消息处理程序使用新的、未经测试的代码消耗最终用户消息,从而冒着丢失或错误处理消息的风险。

实际的消息队列名称被硬编码为类中的 PHP 常量,因此我的第一个策略是创建两组不同的队列,一组用于生产,另一组用于调试,并将队列名称常量外部化到两个不同的文件中。根据我们的调试条件是否为真,我想包含其中一个或另一个常量定义,并将包含文件中的常量分配给当前具有硬编码名称的类常量。

这似乎不起作用,因为常量似乎在 PHP 中表现得像类变量,而我试图像实例变量一样分配值。下一个策略是看看亚马逊方面是否有任何东西可以让我们透明地调试我们的消息消费者,而不会在我们的代码中添加大量黑客,但我看不到任何有利于这一点的东西。我很想知道是否有其他人经历过(理想情况下,解决了这个问题)

【问题讨论】:

    标签: amazon-sqs


    【解决方案1】:

    SQS 不提供检查队列中消息内容的方法,也不让发送者查看是否有任何消费者未能处理消息。

    解决此问题的常用方法是按照您的建议设置两组队列,并让生产者将相同的消息发布到两个队列中。这样您就可以针对生产消息流调试您的代码,而不会影响实际的生产队列。

    我建议将使用哪个队列的决定从您的代码中移到配置中,然后将不同的配置文件部署到您的开发箱和生产箱。风险始终是开发框最终会与生产系统通信,因此在所有代码中使用单一一致的方法来配置这些端点比每次调用时都临时进行的风险要小得多服务。

    我还建议将您的生产和开发队列放在具有不同访问凭证的不同 AWS 账户中。这样,您可以授予您的生产帐户发布到开发帐户队列的权限,但您可以保证您的开发系统无法从生产队列中读取。

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 2015-07-29
      • 2019-03-27
      • 1970-01-01
      • 2016-07-01
      • 2019-05-01
      • 2014-03-23
      • 2018-10-08
      • 1970-01-01
      相关资源
      最近更新 更多