Spring cloud Spring云数据流和原始内容类型

Spring cloud Spring云数据流和原始内容类型,spring-cloud,spring-cloud-stream,spring-cloud-dataflow,Spring Cloud,Spring Cloud Stream,Spring Cloud Dataflow,我正在使用SpringCloudEdgware和SpringCloudDataflow1.2.3 我在contentType和originalContentType方面有问题,尽管我有解决办法,但我不明白为什么需要它 我有各种各样的数据流,所有的下沉数据都会进入rabbit接收器,SpringCloudStarterStreamSinkRabbit的1.3.1.RELEASE(在本解释中称之为datasink)。游戏中的兔源是1.3.1.spring cloud starter stream源兔

我正在使用SpringCloudEdgware和SpringCloudDataflow1.2.3

我在contentType和originalContentType方面有问题,尽管我有解决办法,但我不明白为什么需要它

我有各种各样的数据流,所有的下沉数据都会进入rabbit接收器,SpringCloudStarterStreamSinkRabbit的1.3.1.RELEASE(在本解释中称之为datasink)。游戏中的兔源是1.3.1.spring cloud starter stream源兔的发行版

rabbit接收器中的数据正确地为application/json。产生数据的流具有处理器,这些处理器可以在代码中使用stuff并显式地将输出contentType设置为application/json。这一切都正常运行了一年多,现在仍然如此

现在需要在datasink和另一个rabbit接收器之间引入一个桥接器。新的桥流仅为:

兔源|兔池

其中rabbit source从前面提到的datasink中读取

桥中的下沉数据顽固地具有一个contentType的application/octet流

我尝试了以下设置:

app.rabbit source.spring.cloud.stream.bindings.output.content type=application/json

这将导致一个下沉的contentType的application/json,但负载是base64编码的!base64编码为什么会发生


我的解决方法是破解rabbit接收器,并以编程方式使用originalContentType头(如果存在)覆盖contentType头。我一点也不喜欢这样,希望有更好的解决方案和更多的理解。

很抱歉,您遇到了问题。内容类型协商在SpringCloudStream的更高版本中有了显著的改进,并且在2.0分支中进行了彻底的改进。
因此,在进一步讨论之前,我建议升级到spring cloud stream的最新GA版本,即
Ditmars.SR3
,看看这是否能解决您的问题,或者更好地升级到最新的2.0快照(我们非常接近RC,因此它非常稳定)。

Ditmars.SR3没有任何区别。目前,使用最新的2.0快照以及2.0版本是不可能的。太冒险了。我被黑客攻击的rabbit接收器必须使用originalContentType覆盖contentType:(@bikerlad你能试试另一件事吗?最近报告了一个bug,该bug已修复并提交给了SR3,可能会解决你的问题。基本上,将此应用程序属性设置为在实际绑定器频道
--spring.cloud.stream.default.contentType=application/json
上定义
contentType
,然后告诉我。此外,如果您有机会,请尝试使用2.0(尽管我知道您现在不能使用它),如果它(或以上建议的解决方案)不起作用,请在此处提交一个问题。谢谢。我尝试了兔子接收器组件上的--spring.cloud.stream.default.contentType=application/json(无论是否在任何地方都使用Ditmars.SR3)。与行为没有区别,即application/json设置为contentType,但有效负载仍然是base64编码的。我将在周一提出一个错误,因为我在周六有更好的事情要做。lol我还将在下周某个时候报告使用2.0的情况。同样值得指出的是,当使用命名目的地时,即>:一些-在队列中,contentType始终是application/octet stream,其原始内容类型与您期望的一样。Odd。我还尝试了兔子源组件上的--spring.cloud.stream.default.contentType=application/json,但没有成功。