通过AWS SQS传输ProtoBuf-net消息时,二进制字符无效

时间:2013-05-02 03:06:41

标签: protocol-buffers protobuf-net amazon-sqs

我正在使用Protobuf-net(https://code.google.com/p/protobuf-net/)来序列化我的课程,然后尝试通过亚马逊SQS传输。

当我这样做时,我收到此错误:

Amazon.SQS.AmazonSQSException: Invalid binary character '#xC' was found in the message body, the set of allowed characters is #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF].

这是非常不言自明的。

有没有人有一个很好的解决方案如何让这个工作?

1 个答案:

答案 0 :(得分:4)

邮件正文中只允许使用这些字符:请参阅SendMessage API docs

要发送任何二进制内容,您必须对其进行编码,例如使用Base64。然后消息更大,但只包含ASCII字符,这比亚马逊要求的更严格。

我们正在使用这种方法,例如在softwaremill-common库中发送序列化的Java对象。