我遵循下面的示例来实现spring集成网关。
问题:无法从服务激活器发送的网关上获得响应。
所有的自定义方法都被执行,响应被组成,但是从来没有被发送出去。知道这里缺少什么吗?我的配置在流程中也有一个分散收集。
<!--Gateway:-->
<channel id="bestQuoteResponseChannel"/>
<gateway id="loanBrokerGateway"
default-request-channel="loanRequestsChannel"
service-interface="org.springframework.integration.samples.loanbroker.LoanBrokerGateway">
<method name="getBestLoanQuote" reply-channel="bestQuoteResponseChannel">
<header name="RESPONSE_TYPE" value="BEST"/>
</method>
</gateway>
<chain input-channel="loanRequestsChannel">
<header-enricher>
<header name="creditScore" expression="@creditBureau.getCreditReport(payload).score"/>
</header-enricher>
<recipient-list-router apply-sequence="true">
<recipient selector-expression="headers.creditScore > 800" channel="exclusiveBankChannel"/>
<recipient selector-expression="headers.creditScore > 750" channel="premiereBankChannel"/>
<recipient selector-expression="headers.creditScore > 700" channel="qualityBankChannel"/>
<recipient selector-expression="headers.creditScore > 650" channel="friendlyBankChannel"/>
<recipient channel="easyBankChannel"/>
</recipient-list-router>
</chain>
<!-- Messages are sent to the banks via bank channels and will be received and processed by an aggregator -->
<aggregator input-channel="loanQuotesChannel" output-channel="input" method="aggregateQuotes">
<beans:bean class="org.springframework.integration.samples.loanbroker.LoanQuoteAggregator"/>
</aggregator>
<service-activator ref="findBestQuoteService" method="findBestQuote" input-channel="input" output-channel="bestQuoteResponseChannel"/>
在spring集成流将应答发送到网关之前,我已经在spring集成流中进行了分散收集
。这在某种程度上阻止了它向网关发送响应。
所做的更改:我用发布-订阅通道
和聚合器
组合替换了散点-收集
组件。
https://docs.spring.io/spring-integration/docs/5.3.0.M1/reference/html/scatter-gather.html#scatter-聚集命名空间
首先,在这种情况下,网关上不需要回复通道
,因此服务激活器上也不需要输出通道
。所有的应答逻辑都应该落在replyChannel
头上,当网关方法被调用时,它总是由框架填充。
很高兴看到你的找到了什么样的TestQuoteService。findBestQuote
已经为我们做了一切,因为LoanQuoteAggregator
已经为我们做了一切:
/**
* Aggregates LoanQuote Messages to return a single reply Message.
*
* @param quotes list of loan quotes received from upstream lenders
* @param responseType header that indicates the response type
* @return the best {@link LoanQuote} if the 'RESPONSE_TYPE' header value is 'BEST' else all quotes
*/
public Object aggregateQuotes(List<LoanQuote> quotes,
@Header(value="RESPONSE_TYPE", required=false) String responseType) {
Collections.sort(quotes);
return ("BEST".equals(responseType)) ? quotes.get(0) : quotes;
}
那么,你以后的定制服务有什么意义呢?
还可以考虑打开org.springframework.integration
类别的DEBUG级别,以查看您的消息是如何传输的。可能我们也会在日志中看到一些问题。
我不知道你的逻辑怎么会丢失replyChannel
头,但我们需要更多信息来调查。
我正在使用spring云网关作为边缘服务器。这就是流程 问题是,响应有响应是得到正确的200代码,注入的头是在响应上出现,但数据是不可用的响应。
我试图使用Spring Integration和HTTP出站网关组合一个非常简单的HTTP POST示例。 我需要能够发送带有一些POST参数的HTTP POST消息,就像使用: 如果向接口方法发送一个简单的作为参数,我可以让它工作(没有POST参数),但我需要发送一个pojo,其中pojo的每个属性都成为POST参数。 我有以下SI配置: 我的接口如下所示: 我的类如下所示: 我为此搜索了大量的
我计划将Razorpay支付网关集成到我的客户网站中,该网站已在WordPress中开发,其中的场景如下。 用户将填写他的需求查询表。 然后根据客户的要求,业主将回复成本和一些代码给客户(通过移动/电子邮件通信)。 客户将在网站的支付页面提交表单(姓名,金额,代码为备注和电子邮件ID),该表单将重定向到支付网关页面。 在WordPress网站上,该插件(Razorpay Quick Payment
文档在控制台中的操作非常清楚,https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html,但在CDK中复制真的很痛苦。 我的问题是如何在CDK中创建一个以s3(中间没有lambda)为支持的RESTAPI,或者至少如何创建apigateway。AWS整合
这是我的第一个问题。 我的Web应用程序正在使用Spring集成来获取第三方API响应。 响应具有以“X-”开头的自定义标头值。X值是两个。(X-AccessToken-Quota-Allotted,X-AccessToken-Quota-Flow) 因此,我在config xml的header-mapper中添加了inboundHeaderNames,如下所示。 以下是回应。我可以看到X-Acc
我使用Spring与的集成调用Spring数据Rest URL。 我的调用是对已知资源URL的简单HTTP GET(在我的例子中是“Examples”)。 我想这是引用配置,但我不知道这个警告是否与问题相关。 这是用包含要调用的REST url的消息调用该出站通道: 调用很好,我有一个HTTP状态代码200;这是response.getPayload(): 如果我在浏览器上使用GET直接转到该UR