【问题标题】:Aws SQS giving different messages for the same parametersAws SQS 为相同的参数提供不同的消息
【发布时间】:2017-02-11 06:29:53
【问题描述】:

Aws SQS 为相同的参数提供不同的消息

所以我发布了一条消息:

https://sqs.us-west-2.amazonaws.com/Otherinfo/?Action=SendMessage&MessageBody=Ola&MessageAttribute.1.Name=test1&MessageAttribute.1.Value.StringValue=Drizzy&MessageAttribute.1.Value.DataType=String

这里重要的是我想根据它们的属性获取消息。然后使用邮递员我要求接收:

https://sqs.us-west-2.amazonaws.com/Otherinfo/?Action=ReceiveMessage&MessageAttributeName.1=test1.*&WaitTimeSeconds=10

我什至让它等待响应,但有时我会不断从队列中收到不同的消息,即使我犯了错误并输入了错误的属性名称,我仍然会收到响应。我在这里做错了吗? 是否有任何其他类似的消息传递系统可以与AngularJS 一起使用?

【问题讨论】:

    标签: amazon-web-services message message-queue messaging amazon-sqs


    【解决方案1】:

    如果我理解您的问题,听起来您正试图根据您的属性参数过滤收到的消息 - 这不是它们的工作方式。

    属性参数是一种指定应返回所选记录的哪些属性的方法——它不对消息应用过滤器,只返回匹配的消息。

    您无法过滤收到的消息 - 您请求消息,SQS 向您发送消息 - 您无法控制接收消息的顺序或选择标准。

    【讨论】:

    • 是基于属性获取消息以创建新队列的唯一方法吗?所以我将为每个用户对用户的交互创建一个新队列?为此,我需要启用非常复杂的签名 4 版本签名?
    • 您可以为每个消息类型/类设置一个队列,或者拥有一个消息消费者,在下载消息并确定其类型后,可以将消息打包到适当的消息处理服务。根据您的应用程序,任何一种方法都可能是合适的。
    • 我现在正在测试它,即使使用没有属性的长轮询,当队列中有 7 条消息时,我也只收到一条消息,如果我要与消息消费者一起去,我不会'它仍然是有问题的。即使我要创建新队列也一样,SQS 是否不够可靠?
    • 接收消息请求将仅发送“最多”10 条消息。如果您只有少量测试消息,那么收到少于 10 条是很正常的。如果队列中有数千条消息,那么您每次可能会收到 10 条。 SQS 非常可靠。您的应用程序应该关心它一次获得多少;它应该只处理它得到的东西,然后要求更多。
    • 我理解,但是,如果我使用消息消费者(如果你能说出一些名字,我将不胜感激),它需要队列中的所有消息为我整理它们,因此进退两难。不得不不断询问会增加 api 调用和成本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2023-02-13
    相关资源
    最近更新 更多