问题标签 [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 - 在 HTTP 出站网关之后保留原始请求 POJO
我正在使用 Spring 集成设置工作流程。基本上是这样的:
轮询数据库→拆分行→HTTP发布到Web API→过滤器:(如果OK)→写入文件→从DDBB删除行
我正在使用 JDBC 轮询器和 HTTP 出站网关。我已经设法读取数据库,拆分结果以逐一处理行,然后使用 json 将数据发布到休息服务。
但在那之后,在 http 网关的输出中,我得到了 POST 结果。
在这个用例中,我需要将原始对象发送到 Http 网关,因为我必须将它的一些数据写入文本文件,然后使用它的 ID 从表中的原始记录中删除.
有什么方法可以让 HTTP 网关输出同时包含 POST 结果和它在输入中接收到的原始 POJO?
spring-integration - EnpointSpec 在 Spring Integration Java DSL 中失败
对于上述代码,链接:/test 有效,但 /failing-test 无效。我在 chrome 上收到“端点已停止”。
可能是什么原因?
java - Spring Integration 从 REST 服务获取分页结果
我正在与 REST 服务集成,想法是它marketingCategoryOutboundGateway
由HttpRequestExecutingMessageHandler
. 网关向 REST 服务发出请求并将其响应推送到marketingCategory
通道。网关本身由marketingCategoryPollerMessageSource
使用makeTriggeringMessage
工厂方法创建的消息触发。
问题是服务返回分页结果。除了我已经拥有的服务激活器之外,我会在频道上收听一些东西marketingCategory
,检查是否响应并将具有由创建的递增页码的新消息推makeTriggeringMessage
送到marketingCategoryPoller
频道,以便代码将在循环中旋转,直到它获取来自 REST 服务的所有页面。
Spring Integration 是否允许这样的过滤器在输入通道上接收一条消息,根据条件对其进行测试并在条件为真时将新消息推送到输出通道?
编码:
spring-integration - 如何将 ID 设置为 http 入站网关(DSL 样式)?
在我的 Spring Boot 应用程序中,我有以下入站网关(Java DSL):
我认为.id ("upperCaseGateway")是为网关设置“id”的部分。
另一方面,我正在尝试以稍微不同的 DSL 样式实现另一个 HTTP 入站网关,如下所示:
我的问题: 在创建 http 入站网关的第二种方式中,如何为网关设置一个 ID,值为“ getPersonsGateway ”?我看到在第一种风格中,这可以通过简单的.id("upperCaseGateway")调用来实现。
任何指导将不胜感激!
真诚的,巴拉特
spring-integration - 对 HttpOutboundGateway 进行轮询
如何轮询上述内容,以获取有效负载以进行进一步处理
spring-integration - 如何使用 SpEL 读取 Spring 集成路由器中的有效负载和标头内容
我项目中的技术
作为我的 Spring 集成项目的一部分(带有入站 http 网关的 REST API,它接受 XML 输入并产生 XML 输出),我正在编写以下组件:
- 一个服务激活器,根据其 XSD 对传入的 XML 执行基本验证。
- 如果验证成功,将使用名为“isError”的布尔实例变量/属性设置为 true 来构建 POJO(构建器模式 Java 对象)。
- 如果验证不成功,POJO(构建器模式 Java 对象)将使用名为“isError”的布尔实例变量/属性设置为 false。
- 构建 POJO 后,将其包装成 Message 并发送到输出通道。
- 有一个路由器组件从输出通道获取消息,并根据有效负载/POJO 中的“isError”属性的值决定目标路由/通道。
POJO 类的草稿(实际上,POJO 将具有更多属性,但对于我们的示例,保持简短):
XML 中的验证器服务激活器组件:
XML 中的路由器组件:
终于来到我的问题,在这个“路由器”中,
问题 1) SpEL 表达式 (payload.isError) 似乎有问题,因为我在调用路由器期间遇到了一个异常,如下所示:
org.springframework.expression.spel.SpelEvaluationException:EL1008E:在“com.amb.restSample.core.model.Composite”类型的对象上找不到属性或字段“isError” - 可能不是公共的或无效的?在 org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:217) ~[spring-expression-5.1.5.RELEASE.jar:5.1.5.RELEASE] ... ...
你能告诉我如何访问复合 POJO 中的布尔“isError”属性吗?这是假设发送到路由器的消息是消息
- 问题 2) 如果我希望在将“isError”属性作为消息头(字符串)发送到路由器之前(而不是将其用作复合 POJO 中的布尔属性),是否有访问它的表达式?
spring-integration - Spring Integration Router中的SpEL可以使用Java的String类方法吗
这是如何使用 SpEL 在 Spring 集成路由器中读取有效负载和标头内容的扩展问题
我项目中的技术
作为我的 Spring 集成项目的一部分(带有入站 http 网关的 REST API,它接受 XML 输入并产生 XML 输出),这是我的问题的设置:
- 有一个基于 Builder 模式的 Java 对象(例如
MyPOJO
),它是流中的有效负载。 MyPOJO
有一个字符串属性/实例变量(比如,String response
)以及一个 getter 和 setter。- 在流程中的某个地方,
MyPOJO
构建并response
设置。 - 在里面
response
,有一个关键字/特定的文本将决定流程的进一步进程。
这就是说,是否可以编写一个路由器(使用 XML 配置)来检查response
内部是否Message<MyPOJO>
包含该关键字/特定的文本片段以确定下一步要去哪里?
举例来说,像这样:
当我这样做并启动应用程序时,错误是:
具体来说,该expression="payload.getResponse().contains("keyword")"
部分似乎有一个问题得到解决,这可能与周围的引号有关keyword
非常感谢您对此的任何帮助。
真诚的,巴拉特
java - Spring Integration:如何全局配置 header-mapper
我有一个应用程序监听不同的事件源。对于这些事件中的每一个,我都构建了一个 IntegrationFlow,在这里我只是对过滤和转换等操作进行管道化,最后通过 HTTP 请求将此消息发送到另一个 API。
所有这些事件都带有我也想传播的自定义标头。
我设法通过配置 DefaultHttpHeaderMapper 来传播它们(它已经在传播标准的 http 标头,如“Accept”或“Content-Type”),但问题是我需要对每个 IntegrationFlow 执行此操作。
考虑这个例子:
有没有办法配置这个 DefaultHttpHeaderMapper,但全局?
spring-boot - 我们如何设计一个 spring 集成系统,从第一个调用响应开始,我们必须决定要遵循哪个网关
**Spring 集成:**需要设计一个系统,从第一次调用响应开始,就决定在 Spring 集成中去哪个网关。
试图将第一个网关实现为公共呼叫,然后将另一个网关实现为隔离不同的网关呼叫。因为我们需要网关进行第一次交互。寻找比这更好的设计。
spring-integration - 如何在 spring-integration (DSL) 中公开“Content-Disposition”?
为了下载文件,我会将“Content-Disposition”添加到我的 responseHeader 中,但它不起作用。
响应不会有任何添加的属性。
我得到什么:
缓存控制:“无缓存,无存储,最大年龄 = 0,必须重新验证”
内容类型:“应用程序/json”
过期:“0”
编译指示:“无缓存”