我想在内容类型为application / json的队列中生成响应,因为payload包含json对象。
但是...
不知道为什么我的spring-stream(基于RabbitMQ)总是生成带有以下标题的消息(有效负载是正确的并且具有JSON形式)。
(view from rabbit ui)
properties:
delivery_mode: 2
headers:
contentType: text/plain
originalContentType: application/json;charset=UTF-8
content_type: text/plain
所以content_type等于 text / plain 而不是 application / json; charset = UTF-8 。
我尝试在以下配置中设置内容类型:
spring:
cloud:
stream:
default:
content-type: application/json
bindings:
my-channel:
content-type: application/json
destination: my-channel-rs
producer:
exchange-type: direct
max-length: 1000
但没有帮助。
我觉得在正确的响应中,单头内容类型应该存在值" application / json"。
但也许我错了?有人能够解释上述行为吗?
答案 0 :(得分:2)
您似乎正在使用1.3版本的S-C-Stream。能否请你确认?我们当然可以看看。 另外,FWIW,整个'originalContentType'问题不是问题,只要你有一个SCSt应用程序的消费者(因为它将被重置为你期望的),但我假设它不是,对吗? / p>
此外,您有机会升级到2.0.0.M3。围绕contentType
分辨率进行了很多改进。
答案 1 :(得分:0)
我有类似的问题。我需要底层的spring-amqp来使用" content-type"标头设置实际内容类型。 Spring-amqp通过检查消息有效负载的类来确定它,而不管"内容类型"报头中。
我创建了一个可能会或可能不会被接受的拉取请求:https://github.com/spring-projects/spring-amqp/pull/763/commits/25e4f9adf523a802ac5f26dd373eff8bb764fb49