推送到SQS时的AWS SNS元数据

6
我正在使用 .NET SDK 推送消息到 SNS,然后 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."
}

这是我发布到社交网络的内容。

"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
    }
}
2个回答

7

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

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

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

-1
为什么不在发布到SNS之前压缩数据呢?这样可以发送大量数据。我相信你应该能够找到许多压缩数据的代码。
这是我以前用过的。 使用C#进行字符串压缩/解压缩

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接