问题标签 [spring-integration-http]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
248 浏览

spring-integration - 如何在 Spring 集成网关中获取自定义标头值?

这是我在这里的第一个问题。

我的 Web 应用程序正在使用 spring 集成来获取 3rd 方 API 响应。

响应具有以“X-”开头的自定义标头值。X 值为两个。(X-AccessToken-Quota-Allotted,X-AccessToken-Quota-Current)

因此,我在配置 xml 的 header-mapper 中添加了 inboundHeaderNames,如下所示。

下面是一个回应。我可以在 headers 属性中看到 X-AccessToken-Quota-Allotted 和 X-AccessToken-Quota-Current。

[集成] GenericMessage [payload={"type":"commonResponse","serverName":"uslxacd20022use1c.intranet.local","errorMessage":null}, headers={errorChannel=org.springframework.messaging.core.GenericMessagingTemplate$ TemporaryReplyChannel@41208186, X-Request-Id=0ce88cd6-d04b-47dc-b3db-224656fe9090, uri=https://api-server.com/blabla, http_statusCode=200, X-AccessToken-Quota-Allotted=5000 , jsonObjectName= DmsCommonResponseDto, Authorization=Bearer qqdtbhtp5vk2ss69wjpbdfvh, replyChannel=org.springframework.messaging.core.GenericMessagingTemplate$TemporaryReplyChannel@41208186, json__TypeId__=class com.blabla.DmsPhoneRequestDto, requestId=0ce88cd6-d04b-4769090, X- 2246当前=3, id=12072f4b-8403-a328-6a77-aaba935beba2, contentType=application/json, Content-Type=application/json;charset=UTF-8, timestamp=1592791409206}]

几乎每个字段值都映射到 responseDto 的字段,但我不知道如何将 X-custom 标头值映射到 responseDto 的字段。

以下是当前设置。

任何一点点线索也会有所帮助。提前致谢。

0 投票
1 回答
65 浏览

spring-security - 如何预授权对 Http.InboundGateway 的访问?

我知道可以将 @PreAuthorize 注释添加到 Rest Controller ......

如何预授权对 Spring Integration Http.inbound 网关的访问?我知道我可以在集成流中添加一个组件并在转换器或服务激活器方法上添加注释,但我宁愿没有单独的对象。

0 投票
1 回答
177 浏览

java - 为什么在使用 Java DSL 时必须在入站 webflux 网关上使用 .fluxTransform(f -> f)?

在 Spring Integration 中使用 webflux gateway Java DSL 时,我遇到了失败的回复。它仅适用于前几个请求(具体为<8),之后我收到回复错误:

当我.fluxTransform(f -> f)入站网关上使用 使用非反应式http 出站网关时,即使在具有数千个请求的 jmeter 基准测试中,我也不会收到错误消息。

  • 为什么我必须调用fluxTransform(f -> f)一个流程才能使其工作?
  • 为什么fluxTransform(f -> f)Http.outboundGateway第二个流程中使用时它没有工作?

场景
我已经使用四个网关创建了一个路由,用于在远程机器上发出 Web 请求的相当复杂的设置,但我

整合流程一:

入站 webflux 网关 -> 出站 jms 网关

集成流程 2:

入站 jms 网关 -> 出站 webflux 网关

完整的路线如下所示:

客户端 Web 请求 -> 流 1 ->(消息代理)-> 流 2 -> 服务器 Web 请求

0 投票
1 回答
62 浏览

spring - @EnableConfigurationProperties(MyConfig.class) 生成的 bean 名称在 spring-integration 中不起作用

我有一个配置类,@ConfigurationProperties如下所示。我可以systemConfigMap从类中的 application.yaml进行填充,MyConfig如下所示

主要课程为

问题是生成的 bean 名称是my-config-a.b.c.config.MyConfig,我无法在payload-expressionon中使用spring integration http inbound gateway它,我猜是因为它里面有“-”。

如何为生成的 bean 指定 bean 名称MyConfig

编辑:HTTP 网关配置

我想在请求开始处理流程systemConfigMap时加载这些值。/data

0 投票
1 回答
127 浏览

spring-integration - Spring Integration HTTP Outbound Gateway 标头不是连续请求的转发器

我正在努力解决以下流程:

第一个请求正确提交并且我得到了结果,对于第二个请求我得到401 UNAUTHORIZED这意味着,ocp-apim-subscription-key不包括在内。我试过没有第二个浓缩步骤,因为我认为标题不会被清除,但它也没有改变任何东西。

知道我可能做错了什么吗?我是否需要以不同的方式配置标头映射器?

这是调试的输出,它清楚地表明包含标头:

更新 我已经记录了与wireshark的会话(切换到http而不是https,因为我无法让它工作)。似乎在第二个请求中没有传播订阅密钥。出于某种原因,在第二个中包含了更多标题。

第一

在此处输入图像描述

第二个

在此处输入图像描述

0 投票
2 回答
428 浏览

spring-integration - Spring集成HTTP出站网关根据回复内容重试

我正在使用一个分两步工作的 API:

  1. 它以异步方式开始处理文档,并为您提供用于步骤 2 的 id
  2. 它提供了一个端点,您可以在其中获得结果,但前提是它们准备就绪。所以基本上它总是会给你一个 200 响应,其中包含一些细节,比如处理的状态。

所以问题是如何为 HTTP 出站网关实现自定义“成功”标准。我还想将它与我已经实现的 RetryAdvice 结合起来。

我尝试了以下方法,但首先在 HandleMessageAdvice 中提供的消息有效负载是空的,其次没有触发重试:

我从 4 年前就从 Artem 那里找到了这个答案,但首先我没有在出站网关上找到回复通道方法,其次不确定这个场景是否已经在新版本的 Spring 集成中得到了改进:http outbound带条件重试(用于检查条件)

更新

按照 Artem 的建议,我有以下几点:

和建议:

但是现在当我调试doInvoke方法时,有效负载的主体是null。奇怪的是,当我使用 Postman 执行相同的 GET 请求时,正文被正确返回。任何想法?

使用 Postman 响应的正文如下所示:

这是我使用回调从出站网关获得的有效负载:

在此处输入图像描述

0 投票
1 回答
244 浏览

spring-integration - 如何在spring集成http入站适配器中验证传入的json并返回一个Json响应

我正在尝试设置一个http:inbound-gateway只接受 json 的。我的 xml 配置看起来像。

我已经看到,从 5.2 版本开始,验证器可用于在发送到通道之前检查有效负载,但我似乎找不到示例。添加validator="myValidator"似乎验证了 myRequest。

但是,尽管<int-http:request-mapping consumes="application/json"/>将内容限制为有效的 json 并且 Validator 发出HTTP Status 400 – Bad Request 错误是在 html 中返回的?

如何覆盖它以返回自定义 json 响应?

编辑 1 这是我的完整 xml 配置

我的端点激活器方法看起来像

如果在激活器中引发错误,则错误通道将返回我的自定义 json 响应,否则甚至在记录我在 text/html 中的响应下方得到的消息之前;。

编辑 2 Bellow 是我的验证器类,调用了 looger,如果不存在 msidsn 则触发

我的web.xml

0 投票
1 回答
78 浏览

spring-integration - 回复后可以收到原始消息吗

你能帮我做弹簧集成吗?

我有使用 http 将发布请求发送到其他系统的集成流程。

发送后能否得到原始消息,因为我想对成功和错误进行其他操作。

ErrorHandler 只有 HttpClientResponse,但响应正文为空,我需要 originalMessage 来处理这种情况。

与成功响应相同的情况。我没有原始消息信息来进行下一步操作。

0 投票
1 回答
133 浏览

spring-integration - Spring 集成 Java DSL 入站和出站错误处理

我正在尝试构建一个集成解决方案

我的出站网关定义为

requestFactory 在哪里

快乐的道路工作正常,我面临的问题是不那么快乐的道路。

  • 当 Api 调用返回错误响应时 .transform(exetrnaldto to dto) 失败并且客户端得到 500
  • 我也想将错误响应 json 转换为我的 json
  • 我如何处理错误情况。

我的问题是;

  1. 如何处理错误。
  2. 在错误情况下如何停止流不转换
  3. 如何从出站向客户端发送状态码作为响应(这很重要)
  4. 如何处理典型的@Controller Advice @ErrorHandler 机制或类似的错误。

希望Garry能看到这篇文章,找不到任何答案,我翻了很多书和论坛,感觉 Java DSL 还没有被广泛使用或评论。

0 投票
1 回答
55 浏览

spring-integration - 如何处理 HttpRequestExecutingMessageHandler 中的超时错误?

我正在使用HttpRequestExecutingMessageHandler连接外部服务。这是我的代码:

这会产生以下异常:

处理此超时的正确方法是什么?