gpt4 book ai didi

java - Spring Integration AMQP - 响应中的错误 JSON 类型

转载 作者:行者123 更新时间:2023-11-30 09:12:22 28 4
gpt4 key购买 nike

我正在使用 Spring Integration 和 SI AMQP 3.0.0-RELEASE。

我在两个 SI 实例之间有一个相当简单的基于 AMQP 的请求-响应。

我发现当响应返回请求服务器时,SI 正尝试使用 Request 对象的类型而不是 Response 对象来反序列化响应。

即,给定网关接口(interface):

public AnalyticsReponse getAnalyticsReport(EntityMessage objectUri);

我发现即使 AnalyticsResponse 的正确 JSON 到达服务器,SI 仍试图将其反序列化为 EntityMessage,但失败了。

我已经调试过了,我怀疑原因是响应方正在复制入站 json__TypeId__ header ,而不是提供它自己的 header 。但是,我看不到我在哪里配置错误。

这是我的配置——我做错了什么?

请求方:

<int:channel id="analytics.reports.requests.channel" /> 
<int:channel id="analytics.reports.responses.channel" />
<int:gateway service-interface="com.project.analytics.gateway.AnalyticsReportingGateway">
<int:method name="getAnalyticsReport" request-channel="analytics.reports.requests.channel" reply-channel="analytics.reports.responses.channel"/>
</int:gateway>
<int-amqp:outbound-gateway
request-channel="analytics.reports.requests.channel"
reply-channel="analytics.reports.responses.channel"
exchange-name="analytics.reports.exchange" amqp-template="amqpTemplate" />

响应方:

<int:channel id="analytics.reports.requests.channel" /> 
<int:channel id="analytics.reports.responses.channel" />
<int-amqp:inbound-gateway request-channel="analytics.reports.requests.channel" reply-channel="analytics.reports.responses.channel"
queue-names="analytics.reports.queue" connection-factory="rabbitConnectionFactory" message-converter="jsonMessageConverter"/>

<int:service-activator input-channel="analytics.reports.requests.channel" output-channel="analytics.reports.responses.channel"
ref="analyticsReporter" method="getAnalytics"/>
<bean class="com.project.analytics.reporters.SimpleAnalyticsReporter" id="analyticsReporter"/>


public class SimpleAnalyticsReporter {

@SneakyThrows
public AnalyticsReponse getAnalytics(EntityMessage message) {
return new AnalyticsReponse("Hello");
}

最佳答案

只要你对org.springframework.integration.mapping.support.JsonHeaders不感兴趣,因为你使用 jsonMessageConverter ,您应该过滤它们(<header-filter>)或完全忽略所有 AMQP header (mapped-request-headers="-"mapped-reply-headers="-")。

但是我发现我昨天不对(https://jira.springsource.org/browse/INT-3285)并重新打开问题以修改我们如何默认处理标准 header 以允许在类似情况下工作。谢谢!

关于java - Spring Integration AMQP - 响应中的错误 JSON 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21595553/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com