推送到 SQS 时的 AWS SNS 元数据

Rob*_*ert 6 .net c# amazon-sqs amazon-web-services amazon-sns

我正在使用.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;
}
Run Code Online (Sandbox Code Playgroud)

这是 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."
}
Run Code Online (Sandbox Code Playgroud)

这就是我发布到 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
    }
}
Run Code Online (Sandbox Code Playgroud)

E.J*_*nan 7

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

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 终端节点。