我面临着同样的问题,在下面的链接中详细提到:https://github.com/spring-cloud/spring-cloud-stream/issues/1686谢谢你的帮助。
3hvapo4f1#
这是因为负载类型转换仅在知道将调用哪个消息处理程序(方法)以及将哪个类型指定为输入时发生。记住,这里还有很多事情要做——路由是最好的例子,因为只有在路由决定之后,我们才知道调用哪个处理程序,以及如何提取类型信息来执行类型转换在拦截器级别不知道这一点,因为它太早了,所以一般的建议是,当消息在路由中时,永远不要依赖有效负载,而是按照这样的方式构造消息,以便可以基于简单类型的消息头做出任何类型的路由中决策。一个很好的类比是邮政服务,它根据信封上提供的信息做出路由决定( Postman 不会打开你的信件看有效负载来做出这些决定)。总之,不久前我写了一篇博文-https://spring.io/blog/2018/02/26/spring-cloud-stream-2-0-content-type-negotiation-and-transformation. .. 有一个阅读,因为那里有更多的细节。
1条答案
按热度按时间3hvapo4f1#
这是因为负载类型转换仅在知道将调用哪个消息处理程序(方法)以及将哪个类型指定为输入时发生。记住,这里还有很多事情要做——路由是最好的例子,因为只有在路由决定之后,我们才知道调用哪个处理程序,以及如何提取类型信息来执行类型转换
在拦截器级别不知道这一点,因为它太早了,所以一般的建议是,当消息在路由中时,永远不要依赖有效负载,而是按照这样的方式构造消息,以便可以基于简单类型的消息头做出任何类型的路由中决策。一个很好的类比是邮政服务,它根据信封上提供的信息做出路由决定( Postman 不会打开你的信件看有效负载来做出这些决定)。总之,不久前我写了一篇博文-https://spring.io/blog/2018/02/26/spring-cloud-stream-2-0-content-type-negotiation-and-transformation. .. 有一个阅读,因为那里有更多的细节。