问题标签 [enterprise-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 投票
1 回答
356 浏览

spring-integration - Spring Integration:通道拦截器与端点?

在 Spring-integration 中处理企业集成流程时,处理 Channel Interceptor 中的传输验证和状态跟踪等问题,还是 Service Activator 和 Filters 等端点更“合适”?或者这纯粹是风格问题?

0 投票
2 回答
2310 浏览

jboss - 骆驼中过滤器和选择之间的区别

apache Camel中的过滤器和选择有什么区别?

0 投票
3 回答
4844 浏览

java - How to call Camel route that reads file?

I have camel route to read a file as below:

Now, the question is how to make a call to this route? My end goal is to call from producerTemplate and process the file content.

I couldn't find anything about this on Camel Docs

Also, I tried to use pollEnrich as mentioned in this answer, but while debugging, execution doesn't get there at all to aggregator.

I would be million dollars thankful for Any solution, suggestion or idea.

0 投票
1 回答
50 浏览

java - Apache Camel 异步双向消息传递

经过长时间的研究,我仍然没有可以接受的解决方案。

意图:我正在尝试使用多个端点/组件来生成与专有内容的交换。(图片中第一行第一列

因此交换应该由规范化器/翻译器规范化(图片中的第一行第二列

最后应该处理这个标准化的数据。(保存到数据库,做了一些聚合,计算一些结果)。

生成结果后,应该生成一个全新的交换并将其填充到路由中,该处理器位于“from”语句中。(第 2 行)-> 数据应转换为专有数据-> 发送到端点

问题和初步调查结果

  • 处理器无法直接位于“from”语句中。我只找到了一些“from (direct:somemessages)”方式的解决方法,它是由 to(direct:somemessages) 在处理器中创建的

  • 处理器可以是作为具有端点的组件的程序。并且异步消息可以与相应的消费者一起发布

进站路线示例(第一行

示例路线传出(我想拥有)(第 2 行

那么我怎样才能达到我的目的呢?我的两个结果之一是一个好的解决方案吗?

原理图工作流示例

0 投票
1 回答
123 浏览

java - 了解 Scatter Gather 的企业集成?

我希望更好地理解流行的 EIP 分散集合中的多个拆分器、转换器和聚合方法。

用例是我发送一些可以对应于多种不同类型的 XML。我想拆分标题中指定的类型(每种类型不同)并通过与每种类型对应的特定转换器运行它。

Camel 内部有什么好的例子可以做这样的事情吗?

伪代码理念

0 投票
0 回答
407 浏览

java-8 - 在 Apache Camel 中拆分 Zip 文件?

我正在尝试获取输入 zip 流并从其中获取文件。目前,我有这个 bean 调用尝试将流发送到一个虚拟方法,以便我可以在调试器中分析主体。结果是一个空字符串。

我怎样才能让它将每个单独的文件传递给我的方法?

0 投票
0 回答
1299 浏览

wso2 - 不允许 WSO2 EI 6.1.1 DOCTYPE

这个问题让我发疯,因为提出了许多类似的解决方案,但没有人解决它。

首先,从 SoapUI 发送请求很顺利。然而在 insequence 中,相同的soap请求显示了这个日志:

我已经尝试在axis2.xml中添加每个消息转换器和构建器,例如text/html,此外我还尝试在请求中添加Content-type属性来更改它,如日志所示:

奇怪的是,相同的序列在 wso2 ESB 4.8.1 中有效。wso2 EI 6.1.1 到底发生了什么变化?

任何想法,任何帮助都将受到欢迎。

我将 ENDPOINT 调用留在这里:

0 投票
2 回答
275 浏览

java - Spring Integration,全局将无效消息转移到不同的目的地

设置

我有一个 JMS 消息传递应用程序,其中包含来自多个 JMS 目标的入站消息。消息有效负载是具有一些常见标头的不同 JSON 表示形式。我依靠 Spring 的动态 Jackson 类型转换ServiceActivators来转换为实际的 POJO。目前路由是微不足道的,因为通道本质上是由 JSON 有效负载类型拆分的“数据类型”通道(它们都是 JSON 字符串有效负载,但 JSON 表示非常不同的对象类型)。

问题

我想将全局验证逻辑应用于多个模式匹配通道中的所有入站消息,例如"*input*"并将无效消息转移到验证错误通道以供审查。无论消息有效还是无效,都应该提交本地JMS事务;如果消息无效,我不希望稍后重新发送无效消息。

考虑的潜在选择

通道拦截器

我最初的想法是实现ChannelInterceptor与应该应用此逻辑的所有通道匹配的 a,但似乎无法在 a 中实现转移消息的功能ChannelInterceptor。看来我的两个选项ChannelInterceptor是:

  1. 当拦截器返回 null on 时,让 JMS 事务回滚preSend,或者
  2. 无效消息仍被发送到原始目的地。

这些都不是所需的行为。应该始终提交 JMS 本地事务(只要没有其他错误),并且消息要么发送到原始目的地,要么转移到无效的消息通道。

路由器

ARouter可能是一个不错的选择,但似乎没有办法将路由器应用于模式匹配的一组通道,所以我相信我必须将它单独应用于每个通道。我希望避免这种重复。

AspectJ 切入点

我想到的另一个选择是拆分 AspectJ 并在该方法上实施@Around建议。AbstractMessageSendingTemplate.convertAndSend(destination, payload, postProcessor)这似乎是侵入性的,但似乎它可以工作。如果有框架直接支持更好的选项,我会很高兴听到它。

带有效负载路由的公共输入通道

如果我找不到全局应用这种类型的路由逻辑的方法,那么另一种选择可能是通过单个通道路由所有入站 JMS 消息。可以将自定义Router应用到该入站通道,该通道使用有效负载类型标头将消息引导到其正确的“数据类型”通道并将无效消息路由到验证错误通道。

问题

  • 有没有办法将这种类型的消息转移应用于模式匹配的一组通道?
  • 我是否错过了 Spring Integration 框架的一项重要功能,该功能将使我的考虑之一起作用?
  • 如果没有,是否有比我提到的更好的 EIP 选项?

非常感谢!

0 投票
1 回答
568 浏览

spring-integration - Spring Cloud Stream @StreamListener 和 Spring Integration 的 Resequencer 模式

AFAIK Spring Cloud Stream 项目基于 Spring Integration。因此,我想知道是否有一种很好的方法可以在StreamListener触发处理程序之前重新排序入站消息的子集?或者我是否需要IntegrationFlow使用 Spring Integration 中的 XML 或 Java DSL 配置从头开始组装整个系统?

我的用例如下。大多数时候,我会在 Kafka 主题上处理入站消息。但是,一些事件必须根据CORRELATION_IDSEQUENCE_NUMBERSEQUENCE_SIZE标头重新排序。换句话说,我想尽可能多地使用 StreamListener 并简单地为某些事件插入重新排序策略。

0 投票
1 回答
455 浏览

java - EIP/Apache Camel - 如何同时处理消息,但每组原子?

我有以下情况:

  • 有固定数量的组。
  • 有传入消息的 TCP 流。每条消息都与一个组相关。

我开始骆驼路线如下:

此 Camel 路由使用 TCP 流,解析每个传入消息的有效负载并将其转换为MyMessagepojo,并group-identifier在与消息对应的交换器上设置标头...

现在我想消费seda:process如下:

  • 属于同一组的消息不能同时执行。
  • 属于不同组的消息可以同时执行。
  • 每条消息都应该通过调用来执行run()。我想为此提供/定义一个ExecutorService,所以我可以控制线程数。

我可以在这里应用哪些企业集成模式?如何将这些概念映射到 Camel?

我了解到 ActiveMQ 具有消息组的概念(http://activemq.apache.org/message-groups.html)。这可能会提供一种方法来确保同一组的两条消息永远不会同时执行。不过,我不确定仅为此引入 ActiveMQ 是不是矫枉过正。这也可以用“核心”骆驼/Java来实现吗?