2016-09-27 56 views
2

我使用.NET SDK来推送消息到SNS然后消息发布到订阅的SQS队列,但是增加了SNS元数据,诸如消息类型等,以及i结束了较大的有效载荷JSON其中我不想要,特别是当SQS限制为每条消息256k时。AWS SNS元数据时,推至SQS

是否有可能将命令发送到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":"[email protected]", 
      "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":"[email protected]", 
     "OwnersEmail":null, 
     "AccommodationId":1, 
     "BookingCode":"a523cd07-5506-48ad-9380-2e94002722e0", 
     "EventName":"BookingRecordCreated", 
     "CreatedOnUtc":"2016-09-26T15:14:55.437", 
     "HandledOnUtc":null 
    } 
} 

回答

4

如果您想启用RAW在SNS中发送邮件:

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

除了发送大的有效载荷,以亚马逊SNS你现在 可以启用递送至​​亚马逊 SQS端点或HTTP/S的端点的消息的原始消息传递。这消除了对 端点过程JSON格式,这是为亚马逊 SNS元数据时,未选中的原始消息传送所创建的需求。例如, 当为Amazon SQS端点启用原始消息传递时, 未包含Amazon SNS元数据,发布消息为 照原样传递到订阅的Amazon SQS端点。

+0

那个伎俩!谢谢 – Robert

0

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

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