【问题标题】:AWS SNS metadata when pushing to SQS推送到 SQS 时的 AWS SNS 元数据
【发布时间】:2016-09-27 08:42:39
【问题描述】:

我正在使用 .net sdk 将消息推送到 SNS,然后将消息发布到订阅的 SQS 队列,但是 SNS 添加了消息类型等元数据,我最终得到了我不想要的更大的 JSON 有效负载,尤其是当SQS 限制为每条消息 256k。

是否可以向 SNS 发送命令并告诉它不要发送元数据?

代码如下:

var credentials = new StoredProfileAWSCredentials("dev");

using (var client = new AmazonSimpleNotificationServiceClient(credentials, Amazon.RegionEndpoint.EUWest1))
{
    var request = new PublishRequest();
    request.Message = message;
    request.TargetArn = "ARN";

    var response = client.Publish(request);
    // return response;
}

这是 SNS 向 SQS 推送的内容:

{  
   "Type":"Notification",
   "MessageId":"3333333",
   "TopicArn":"ARN",
   "Message": {
       "Id":45,
       "MessageId":"a871f8d7-7091-4548-87c5-da3bb4131044",
       "Payload": {
           "Internalid":"a7c50558-fc9c-47a6-b0ed-cb0cf5020f55",
           "MessageId":"a871f8d7-7091-4548-87c5-da3bb4131044",
           "TravelersName":"aaa aaaa",
           "TravelersEmail":"aaa@aa.com",
           "OwnersEmail":null,
           "AccommodationId":1,
           "BookingCode":"a523cd07-5506-48ad-9380-2e94002722e0"
       },
       "EventName":"BookingRecordCreated",
       "CreatedOnUtc":"2016-09-26T15:14:55.437",
       "HandledOnUtc":null
    },
    "Timestamp":"2016-09-26T15:14:50.923Z",
    "SignatureVersion":"1",
    "Signature":"dfgdfg///==",
    "SigningCertURL":"https://sns",
    "UnsubscribeURL":"https://sns."
}

这就是我发布到 SNS 的内容

"Message":{
   "Id":45,
   "MessageId":"a871f8d7-7091-4548-87c5-da3bb4131044",
   "Payload": {
       "Internalid":"a7c50558-fc9c-47a6-b0ed-cb0cf5020f55",
       "MessageId":"a871f8d7-7091-4548-87c5-da3bb4131044",
       "TravelersName":"aa aaa",
       "TravelersEmail":"aa@aaa.com",
       "OwnersEmail":null,
       "AccommodationId":1,
       "BookingCode":"a523cd07-5506-48ad-9380-2e94002722e0",
       "EventName":"BookingRecordCreated",
       "CreatedOnUtc":"2016-09-26T15:14:55.437",
       "HandledOnUtc":null
    }
}

【问题讨论】:

    标签: c# .net amazon-web-services amazon-sqs amazon-sns


    【解决方案1】:

    您想在 SNS 中启用 RAW 消息传递:

    http://docs.aws.amazon.com/sns/latest/dg/large-payload-raw-message.html

    除了发送大型负载外,您现在还可以使用 Amazon SNS 为传递到亚马逊的消息启用原始消息传递 SQS 端点或 HTTP/S 端点。这消除了对 处理 JSON 格式的端点,这是为 Amazon 创建的 未选择原始消息传递时的 SNS 元数据。例如 为 Amazon SQS 终端节点启用原始消息传输时, 不包括 Amazon SNS 元数据,发布的消息是 按原样传送到订阅的 Amazon SQS 端点。

    【讨论】:

      【解决方案2】:

      为什么不在发布到 sns 之前压缩数据。通过它您可以发送大量数据。我相信您应该能够找到许多代码来压缩您的数据。

      这是我以前用过的。 Compression/Decompression string with C#

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-11
        • 2017-12-10
        • 1970-01-01
        • 2021-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多