我希望使用内容类型application/json在我的队列上生成响应,因为有效负载包含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等于文本/纯,而不是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
但是没有帮助。
我的感觉是,在正确的响应中,单个头部content-type应该以"application/json“的值存在。
但也许我错了?有没有人能解释上面的行为?
发布于 2017-11-28 22:58:32
您使用的似乎是1.3版本的S-C-Stream。你能确认一下吗?我们当然可以看一看。另外,顺便说一句,只要你有一个消费者是SCSt应用程序(因为它将被重置为你所期望的),整个'originalContentType‘问题就不是问题,但我假设它不是问题,对吗?
另外,有可能升级到2.0.0.M3。在contentType
解析方面已经有了很多改进。
发布于 2018-06-10 02:46:48
我也遇到过类似的问题。我需要底层的spring-amqp使用" content - type“头来设置实际的内容类型。Spring-amqp通过检查消息有效负载的类来解决这个问题,而不考虑"content-type“头。
我创建了一个可能被接受也可能不被接受的拉取请求:https://github.com/spring-projects/spring-amqp/pull/763/commits/25e4f9adf523a802ac5f26dd373eff8bb764fb49
https://stackoverflow.com/questions/47534318
复制相似问题