MassTransit启用Amazon SQS加密时的反序列化异常问题
问题诊断与解决方案
问题根源
MassTransit加密功能默认使用Bson作为内部序列化格式,在Amazon SQS环境下,该默认配置会与JSON序列化逻辑冲突,导致反序列化时出现无效Bson类型错误(Unexpected BsonType value: 38)。加密后的Bson格式数据在SQS传输过程中会被额外处理,最终引发数据格式解析异常。
解决方案
修改加密配置,明确指定使用JSON作为内部序列化格式,替代默认的Bson。调整后的配置如下:
byte[] key = { 156, 62, 75, 207, 47, 62, 42, 73, 53, 164, 114, 49, 46, 226, 164, 1, 79, 225, 65, 193, 59, 192, 72, 27, 234, 87, 17, 44, 46, 207, 137, 1 }; // 移除单独的UseJsonSerializer/UseJsonDeserializer调用,改为在加密配置内指定 sqsConfig.UseEncryption(key, cfg => { cfg.UseJsonSerializer(); cfg.UseJsonDeserializer(); });
额外说明
- 原代码中单独调用
UseJsonSerializer()和UseJsonDeserializer()属于冗余操作,加密配置会覆盖默认序列化器。 - 若问题仍存在,建议升级到最新版本的MassTransit,修复SQS加密相关的已知bug。
- 确保生产者和消费者使用完全相同的加密密钥与序列化配置,避免因配置不一致导致解析失败。
内容的提问来源于stack exchange,提问作者yashpatil
相关产品推荐
相关产品推荐

