问题标签 [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.
spring-integration - Spring Integration 5.1 - 集成流测试 - dsl
我已经建立了一个简单的 Spring Integration 流程,它由以下步骤组成:
- 然后定期轮询休息 api
- 对有效载荷进行一些处理
- 并将其放在 Kafka 主题上。
请注意以下代码:
这非常有效,但是,我正在努力提出一些好的测试。
- 我应该如何模拟外部 REST API?
- 我应该如何测试重试策略是否启动以及是否发出了所需数量的 http 请求?
- 如何更改
MessageSource
定期轮询的流(路径变量列表)? - 如何检查有效负载是否已成功进入 Kafka 主题?
spring - 如何在出站消息失败的情况下使用 RedeliveryPolicy->入站->httpgateway(消息在此处失败)->外部服务
如何在出站->入站->httpoutboundgateway(消息在此处失败)->外部服务中出现失败消息时使用 RedeliveryPolicy
失败的消息不会根据 RedeliveryPolicy 重试,主要是因为在异常发生之前消息已经出列。
对于我的重新交付政策,
预期结果是基于 RedeliveryPolicy 重试,如果所有重试均失败,则最终以 dlq 结束。
spring-integration - 有没有办法使用spring集成将外部服务作为pubsub模型的订阅者
我是 spring 集成的新手,我正在尝试通过 spring 集成来实现以下目标:有 3 个微服务 A、B、C,基于某些事件,我想向服务 B 和 C 的 spring 集成通道发布消息应该订阅了。我无法想出一种方法来作为订户提供外部服务。请帮忙。提前致谢。
spring-integration - Spring Integration - 使用 http-outbound gateway (POST) 发送类型为“application/x-www-form-urlencoded”的表单参数
技术 我正在使用 Spring Boot 2.x、Spring Integration 5.x。
我正在尝试使用 http-outbound 网关 (POST) 发送表单参数。我的弹簧集成文件看起来像
在我的转换器中,我正在创建一个表单参数映射,如下所示,并将该映射设置到我的有效负载中。
当点击 POST URL 时,我收到以下异常。
- 据我了解,客户端无法读取我作为地图发送的表单参数,返回 401 - Unauthorized - Bad token。我已经检查了所有凭据,它们没有任何问题。只是客户无法阅读它们。
- 我得到的响应是json,无论是成功还是失败。当我的错误通道中出现异常时,我正在尝试读取正文,但它返回 null。这就是我试图阅读异常的方式。
java - 如何使用 spring 集成实现 POST http 端点?
我有以下配置:
但是当请求时,我在服务器端看到以下日志:
我不知道我应该在哪里订阅。如何编写请求处理程序来处理请求并准备响应?
java - 为什么客户端收到 500 响应错误,尽管服务器在 spring-integration-http 中没有遇到任何错误?
我有以下服务器配置:
和以下客户端配置:
从我发送的客户a,v,b
我看到服务器接受了该消息,将 3 条消息发送到 rabbitMq(通过 rabbit admin 我看到消息确实被 rabbit 接受了)并得到 3 个确认:
但客户端打印以下跟踪:
为什么会发生?
我该如何解决?
附言
正如@Artem Bilan 所说,我的问题是我没有对客户做出任何回应,因此客户遇到了超时错误。我想说这个错误真的很令人困惑。我希望 504 错误超时。
在所有消息都发送给rabbit之后,我试图向客户端返回一些东西,所以我编写了以下配置:
但是从客户端我看到了相同的堆栈跟踪。另外从服务器端我看到了那个痕迹:
这意味着根本没有调用我的 2 个处理程序。为什么?
更新
我还能够应用与发布订阅相关的建议:
错误消失了,但客户端只得到最后一个拆分的部分:
据我了解,在这种情况下,2 个子流是独立的,由于某种原因,只有最后一部分被发送给客户端......
spring-integration - Spring Integration DSL HTTP 出站网关支持字节数组作为有效负载
是否可以Http.outboundGateway
为多部分提供字节数组而不是文件?REST 模板支持此实现(请参阅:https ://medium.com/@voziv/posting-a-byte-array-instead-of-a-file-using-spring-s-resttemplate-56268b45140b )。
当我使用上面的代码片段时,我得到:
Caused by: java.lang.IllegalArgumentException: Message payload must be of type [java.io.File]: java.lang.String
片段:
spring-integration - 无法在 Spring 集成中将回复通道设置为消息头
肯定有一些我必须错过的东西,所以在这里寻求帮助。
我正在使用带有以下 HTTP 入站网关的 Spring Integration 构建一个简单的 REST 应用程序:
一旦 XML 进入这个网关,它会经历以下简单的步骤:
- 转换生成与传入请求对应的 JAXB 对象
- 从 JAXB 对象中读取“uuid”并将其设置为 SI(Spring 集成)消息的标头的消息标头丰富
- 转换以生成对调用客户端的 XML 响应。
首先,这是整个应用程序的 XML 配置(为简洁起见,省略了 HTTP 命名空间):
在应用程序中从一个步骤流向另一个步骤的有效负载是一个自定义的 Builder 对象,如下所示(省略包名):
我没有在转换器上使用“输出通道”的原因是因为我想在运行转换的 java 逻辑中明确选择 replyChannel/outgoing 路由。
例如,在FruitQuoteTransformation.generateFruitQuoteRequestJAXB方法中,我为成功设置了一条路线,为异常/错误设置了另一条路线,如下所示:
- 我的第一个问题 出于某种原因,.setHeader调用没有按预期工作,并且消息不会进入下一个频道。有什么我想念的吗?即使我使用.setReplyChannelName ,结果也是一样的。
- 我的第二个问题 如果问题 1) 有解决方案,将整体 SI 配置保持为基于 XML,是否有另一种方法来设置自定义回复通道?我想到的唯一选择是在每个变压器之后使用路由器,但这似乎太冗长了。
你能帮忙吗?
spring-boot - Spring集成HttpRequestExecutingMessageHandler ContentType问题
我遇到了 Spring Integration 的问题。我正在尝试通过 HttpRequestExecutingMessageHandler 执行休息调用。我的休息端点只接受内容类型“应用程序/json”。
问题是 HttpRequestExecutingMessageHandler 发布内容类型为“text/plain;charset=UTF-8”。
如何覆盖内容类型?
spring-integration - IntegrationFlow HttpRequestHandlingMessagingGateway 直接回复
我是 Spring Integration 的新手,我正在尝试使用 HttpRequestExecutingMessageHandler 和 HttpRequestHandlingMessagingGateway。处理程序正在发送一个 POST 请求并期待回复。网关正在使用该请求。它工作正常,但处理程序没有得到回复。我不知道如何设置我的流程,我可以直接发回回复并继续我的流程。
我的 HttpRequestExecutingMessageHandler 已成功发布请求。HttpRequestHandlingMessagingGateway 已成功使用它。起初我有一个错误“超时内没有收到回复”,所以我添加了一个publishSubscriberChannel。我不知道这是否是正确的方法,但我找不到显示如何正确回复的工作示例。
我上面的代码正在运行,但没有将回复发送回 HttpRequestExecutingMessageHandler!
我的目标是收到请求消息并直接发回 200 OK。之后我想继续我的集成流程,做一些事情并将结果发送到队列。
有什么建议么?