问题标签 [spring-integration]

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 投票
4 回答
4447 浏览

spring - Spring Integration 作为独立 ESB 的嵌入式替代方案

有没有人有将Spring Integration项目作为嵌入式 ESB 的经验?

我对以下用例非常感兴趣:

  • 按计划从目录中读取文件
  • 从 JDBC 数据源获取数据
  • 动态启动/停止/重新部署模块的模块化和可能性(例如,一个模块可以按计划扫描目录,另一个来自 jdbc 数据源的调用查询等)
  • 重复/重试策略

更新:

除了“从 JDBC 数据源获取数据”之外,我找到了所有问题的答案。技术上可行吗?

0 投票
1 回答
722 浏览

java - Spring Integration 1.0 RC2:流文件内容?

我一直在努力寻找这方面的信息,但由于 Spring Integration 框架的不成熟,我运气不佳。

这是我想要的工作流程:

  1. 新文件放置在“传入”目录中

  2. 使用 file:inbound-channel-adapter 获取文件

  3. 文件内容一次 N 行流式传输到“Stage 1”通道,该通道将行解析为中间(共享)表示。

  4. 这条解析后的线路被路由到多个“Stage 2”通道。

  5. 每个“第 2 阶段”通道对 N 条可用线路进行自己的处理,以将它们转换为最终表示。该通道必须有一个队列,以确保在一个通道的处理速度明显慢于其他通道的情况下,不会使第 2 阶段通道不堪重负。

  6. N 行的最终表示被写入文件。将有与步骤 4 中的路由目标一样多的输出文件。

**上面的'N'代表一次读取的任何合理数量的行,从[1,我可以合理地放入内存中],但保证始终小于完整文件中的行数。*

如何在 Spring Integration 中完成流式传输(步骤 3、4、5) ?不流式传输文件相当容易,但我的文件足够大,我无法将整个文件读入内存。

作为旁注,我有一个没有 Spring Integration 的工作流的工作实现,但是由于我们在项目的其他地方使用 Spring Integration,我想在这里尝试一下它的执行方式以及结果如何代码比较长度和清晰度。

0 投票
5 回答
8650 浏览

spring - Spring 集成:将 Web 服务连接到 FIFO 队列

我仍在为 Spring 集成而苦苦挣扎——这是我的场景:

  1. Web 服务从客户端 A 获取请求
  2. Web 服务将请求放入队列
  3. 队列消费者处理消息 FIFO 并发送一个响应,该响应被路由回 Web 服务
  4. Web 服务将响应发送回客户端 A

将有多个 Web 服务都将消息提供到此队列中,我需要确保它们真正按照接收顺序进行处理。

我需要将哪些 Spring Integration 连接在一起?

0 投票
1 回答
4489 浏览

java - Java 事件处理框架

我正在寻找一个建立在流程管理器模式之上的轻量级框架:

http://www.eaipatterns.com/ProcessManager.html

我对使用它进行事件处理特别感兴趣,我对特定事件的成功或失败结果感兴趣,并根据该结果将消息传递到另一个“阶段”。除了成功和失败之外,可能还有其他结果,所以我想要一些有点灵活的东西......

我并不是真的在寻找一个重量级的 ESB 来处理这种情况,因为它看起来完全是矫枉过正。对于这类事情,Spring 集成看起来不错。任何人都可以推荐任何其他框架来帮助实现这一目标吗?

另一种方法是使用基本的 Spring 框架构建一些东西......

0 投票
1 回答
2893 浏览

configuration - Spring集成延迟器元素

我正在尝试配置我的 spring 集成并希望使用该元素,该元素基本上位于 retryFilter 和队列之间。

如果我直接从 retryFilter 进入队列,一切正常,但是,一旦我将延迟器元素放在它们之间,配置文件就无法加载(当其中出现错误时会发生这种情况)。

本节的配置如下:

非常感谢任何帮助。

戴夫

0 投票
1 回答
1103 浏览

apache-flex - Flex + Spring + BlazeDS + Glassfish + OpenMQ - 如何为 OpenMQ 配置 web-application-config?

我有 spring-flex-testdrive 示例(使用 Topic 发布/订阅消息的 JMS 聊天应用程序)在 Tomcat 上使用 ActiveMQ 现在我想在 Glassfish 上使用 OpenMQ 运行这个示例。

这是我在网上找到的相关示例配置,但它不适用于 Flex/Glassfish/OpenMQ/BlazeDs/Spring-Integration 技术组合。(链接

我可以在 Glassfish 上部署它,但它无法连接到目的地。我看到论坛提到只是用 OpenMQ 类/bean 声明替换 ActiveMQ,但似乎并非如此。如何为 OpenMQ 配置 web-application-context.xml?常见的陷阱是什么?

谢谢。

0 投票
2 回答
1983 浏览

java - Spring 集成代理网关上的入站转换器

我想配置一个看起来像这样的过程:

实际上,我想以某种方式访问​​ Spring Integration 创建的隐藏通道,并将返回的消息有效负载转换为不同的消息类型。

一个简单的解决方案可能起初似乎是在网关上配置默认回复通道,问题是我正在使用 OSGi 在捆绑包之间共享通道。Service Activator 由捆绑“B”提供,并为传入请求提供共享通道(它充当数据提供者服务)。捆绑“A”需要一些数据,因此它需要它,但需要另一种格式的结果。请注意,如果 Bundle “B” 能够使用 Bundle “A” 指定的默认回复通道,则 Bundle “A” 必须共享它。这一切都很好,但是我在 OSGi 中有一个循环依赖,什么都不会开始。

似乎这里的另一种解决方案是在服务激活器上定义一个输出通道,但这会遇到一个稍微不同的问题。假设我从 Bundle “B” 共享输出通道,我已经缓解了循环依赖问题,但现在任何时候有人从 Bundle “A” 请求某些东西,回复都会发送给连接到输出通道的每个人——这也是不可取的.

[编辑:我的意思是,如果“B”为其服务激活器共享输入和输出通道,那么绑定到“B”输出通道的任何人都将收到任何人对“B”输入的请求的结果通道——并且期望的行为是回复是针对请求者的。

我应该注意,这里的转换器仅在 Bundle A 的上下文中才有意义。Bundle B 提供了一项服务(对于所有意图和目的,我无法控制)。特定于 Bundle A 需求的转换应驻留在 Bundle A 中。]

所以,我认为我真正需要的是能够在回复动态代理网关时配置转换器,但尽我所能在 Spring Integration 手册中找不到这样的设备。与往常一样,我们将不胜感激。

--

编辑2:我在这里尝试了另外两种策略:

  1. 使用引用 Bundle B 中的 OSGi 共享通道的服务激活器

    结果是返回的元素是一个 GenericMessageType——它可以被转换。GenericMessageType 实际上是服务激活器必须指向的“发送”方法的布尔结果,而不是回复消息。所以这个方法行不通

  2. 使用 header-enricher 设置REPLY_CHANNEL并将回复通道作为参考而不是值传递。

    这种技术不起作用,当设置了网关的默认回复通道(并且必须设置默认回复通道)时,REPLY_CHANNEL 标头元素似乎被忽略了。

0 投票
2 回答
7776 浏览

spring - 如何在 Tomcat 中部署 Spring Integration 应用程序?

我已经完成了“ 10 分钟内的 Spring 集成”教程,用于设置一个基本的 Spring 集成应用程序。我想在 Tomcat 中部署这个应用程序,并在服务器上运行输入通道并将输出发送回客户端,但我很难找到任何这样的例子。

谁能为我提供一些指向如何执行此操作的教程的链接或任何其他类型的指导?非常感谢所有帮助!

0 投票
4 回答
497 浏览

java - 在多个组件中记录全局 ID

我有一个系统,其中包含使用 JMS 和 Spring Integration 连接在一起的多个应用程序。消息沿着一系列应用程序发送。

[应用 A] -> [应用 B] -> [应用 C]

我们在消息头中设置了一个全局 id,这样我们就可以通过系统跟踪每个消息的生命周期。

我希望能够在系统中的任何日志消息之前添加消息全局 ID。

有没有其他人这样做过?有什么方法可以将此变量与 Thread 相关联,以便我可以在以后的方法中访问它?我宁愿不在系统的方法中传递变量。

0 投票
1 回答
3730 浏览

java - DefaultMessageListenerContainer 不适用于 Websphere MQ

我正在使用 spring 2.5.6 和 spring-integration 1.0.3 和 MQ 客户端 6.0.2.2

我不得不向我的消息驱动通道适配器添加一个消息选择器,但现在我收到以下错误:

MQJMS2008: failed to open MQ queue ; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2085

当我使用 ActiveMQ 作为测试工具时,它可以工作。

我的配置:

如果我恢复到以前的配置,一切都很好(除了我没有消息选择器!)