调试Amazon SQS使用者

时间:2013-03-12 18:10:40

标签: amazon-sqs

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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