Amazon web services AmazonSQS,是否可以根据发送者ID从SQS获取消息
我们有多个Amazon用户,他们将消息发送到同一个SQS队列中,所以可以根据发送者ID从队列中获取消息吗?表示根据发件人ID返回特定的邮件列表。否,您无法筛选发件人ID上的邮件获取请求,您需要读取所有邮件并“丢弃”(返回)不匹配的邮件,但这并不是最好的解决方法——你将为所有这些读取请求付费,并抛出大量消息(即将它们返回队列) 虽然所有“错误”的消费者都在这样做,但实际上想要/需要分配给他们的消息的消费者将被阻止获得他们自己的消息——可能会持续很长时间Amazon web services AmazonSQS,是否可以根据发送者ID从SQS获取消息,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我们有多个Amazon用户,他们将消息发送到同一个SQS队列中,所以可以根据发送者ID从队列中获取消息吗?表示根据发件人ID返回特定的邮件列表。否,您无法筛选发件人ID上的邮件获取请求,您需要读取所有邮件并“丢弃”(返回)不匹配的邮件,但这并不是最好的解决方法——你将为所有这些读取请求付费,并抛出大量消息(即将它们返回队列) 虽然所有“错误”的消费者都在这样做,但实际上想要/需要分配给他们的消息的消费者将被阻止获得他们自己的消息——可能会持续很长时间 不确定您的意图,但听起来您最好使用多个队列,
不确定您的意图,但听起来您最好使用多个队列,每个senderid一个,如果您希望这样使用消息-创建额外队列没有额外成本。我假设过滤操作完成后需要处理队列项[实体]。虽然多个队列肯定会有所帮助,但更可靠的方法是执行已完成的预处理,然后在我看来,[如按发件人id过滤]是一种优雅的方法 随着AWS Lambda的发布,您当然可以卸载过滤或预处理,然后将其推送/放置在适当的位置 如果您的用户将项目推送到队列中,请尝试以下方法 您可以尝试使用2个Lambda函数[Feeder&Worker] 进料器将是
预定lambda函数
,其任务是接收项目
来自SQS(如果有)并将其作为SNS主题推送(并且永远继续这样做)
工作者将被链接以收听SNS主题,该主题将执行数据过滤
[取决于发件人ID]。通过的项目可以移动到一个全新的队列,其余的可以报废
更好的方法是让用户直接将实体推送到SNS主题,lambda函数可以直接执行过滤。是的,这是可能的。
从message属性中读取SenderId将为您提供发件人的id。这将帮助您唯一地识别将消息放入队列的用户
您可以这样做:
Message sqsMessage = <your_SQS_message>;
String senderId = sqsMessage.getAttributes().get("SenderId");
消息sqsMessage=;
字符串senderId=sqsMessage.getAttributes().get(“senderId”);
基于senderid添加筛选器效率低下,但您可以执行业务逻辑,在该逻辑中,您可以添加度量或基于senderid将任务委托给工作人员