基于消息属性从Amazon SQS向SQL数据库发送消息

时间:2018-05-24 05:41:29

标签: asp.net amazon-web-services amazon-sqs

我的任务的用例:目前用例是我在表格中填写名字,姓氏等详细信息,然后点击提交按钮,数据直接进入 Amazon SQS ,然后定义了一个包含按钮的侦听器,在该按钮上单击数据从侦听器到MSSQL数据库。

场景(当前):现在,正在发送属于不同消息属性的所有消息。

要求:我想发送属于特定邮件属性的特定邮件。 例如:假设A类,B类和C类是三种不同的消息属性,A类包含一条消息,B类包含两条消息,C类包含四条消息,我想要的只是消息应该发送B类属性,而不是A类和C类。

我想知道是否可以根据消息属性从Amazon SQS向SQL db发送选定/特定消息?

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:2)

无法根据邮件属性有选择地传递SQS邮件。标准做法是让每个类消费者拥有自己的队列,这样就不需要过滤,因为假设给定队列的所有消费者都能够处理队列中的所有消息。

如果确实需要一个公共消息源来使其输出按消息属性进行过滤,那么建议的解决方案是将消息发布到SNS主题,然后根据消息属性过滤器为该主题预订队列,在SNS中支持。例如,此配置允许队列1捕获类型A,B和C的消息,同时允许队列2捕获类型C,D和E的消息。注意类型C上的重叠。此类消息在这种配置下,它将被传送到两个队列。

请参阅Filtering Messages with Amazon SNSSend Fanout Event Notifications

SNS主题和SQS队列可以是多对多映射,其中多个队列以任何所需的配置订阅多个主题。

请注意,当SQS队列订阅SNS主题时,默认行为仅用于将有效负载发送到队列。要接收整个SNS包装器(包括SNS消息属性),请启用"原始消息传递"每个订阅。

这就留下了一个问题,即SQS消息属性的目的必须是什么,如果不是服务端过滤的话。它们可以是有利于接收者的元数据,提供有关有效载荷的信息而无需实际反序列化有效载荷,或者它们可以提供有关有效载荷的传输编码的信息,例如有效载荷是否具有gzip压缩和base64发件人应用的编码,消费者需要知道这些编码才能解压缩有效负载。