问题标签 [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.
spring-integration - Spring Integration:通道拦截器与端点?
在 Spring-integration 中处理企业集成流程时,处理 Channel Interceptor 中的传输验证和状态跟踪等问题,还是 Service Activator 和 Filters 等端点更“合适”?或者这纯粹是风格问题?
jboss - 骆驼中过滤器和选择之间的区别
apache Camel中的过滤器和选择有什么区别?
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.
java - Apache Camel 异步双向消息传递
经过长时间的研究,我仍然没有可以接受的解决方案。
意图:我正在尝试使用多个端点/组件来生成与专有内容的交换。(图片中第一行第一列)
因此交换应该由规范化器/翻译器规范化(图片中的第一行第二列)
最后应该处理这个标准化的数据。(保存到数据库,做了一些聚合,计算一些结果)。
生成结果后,应该生成一个全新的交换并将其填充到路由中,该处理器位于“from”语句中。(第 2 行)-> 数据应转换为专有数据-> 发送到端点
问题和初步调查结果
处理器无法直接位于“from”语句中。我只找到了一些“from (direct:somemessages)”方式的解决方法,它是由 to(direct:somemessages) 在处理器中创建的
处理器可以是作为具有端点的组件的程序。并且异步消息可以与相应的消费者一起发布
进站路线示例(第一行)
示例路线传出(我想拥有)(第 2 行)
那么我怎样才能达到我的目的呢?我的两个结果之一是一个好的解决方案吗?
java - 了解 Scatter Gather 的企业集成?
我希望更好地理解流行的 EIP 分散集合中的多个拆分器、转换器和聚合方法。
用例是我发送一些可以对应于多种不同类型的 XML。我想拆分标题中指定的类型(每种类型不同)并通过与每种类型对应的特定转换器运行它。
Camel 内部有什么好的例子可以做这样的事情吗?
伪代码理念
java-8 - 在 Apache Camel 中拆分 Zip 文件?
我正在尝试获取输入 zip 流并从其中获取文件。目前,我有这个 bean 调用尝试将流发送到一个虚拟方法,以便我可以在调试器中分析主体。结果是一个空字符串。
我怎样才能让它将每个单独的文件传递给我的方法?
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 调用留在这里:
java - Spring Integration,全局将无效消息转移到不同的目的地
设置
我有一个 JMS 消息传递应用程序,其中包含来自多个 JMS 目标的入站消息。消息有效负载是具有一些常见标头的不同 JSON 表示形式。我依靠 Spring 的动态 Jackson 类型转换ServiceActivators
来转换为实际的 POJO。目前路由是微不足道的,因为通道本质上是由 JSON 有效负载类型拆分的“数据类型”通道(它们都是 JSON 字符串有效负载,但 JSON 表示非常不同的对象类型)。
问题
我想将全局验证逻辑应用于多个模式匹配通道中的所有入站消息,例如"*input*"
并将无效消息转移到验证错误通道以供审查。无论消息有效还是无效,都应该提交本地JMS事务;如果消息无效,我不希望稍后重新发送无效消息。
考虑的潜在选择
通道拦截器
我最初的想法是实现ChannelInterceptor
与应该应用此逻辑的所有通道匹配的 a,但似乎无法在 a 中实现转移消息的功能ChannelInterceptor
。看来我的两个选项ChannelInterceptor
是:
- 当拦截器返回 null on 时,让 JMS 事务回滚
preSend
,或者 - 无效消息仍被发送到原始目的地。
这些都不是所需的行为。应该始终提交 JMS 本地事务(只要没有其他错误),并且消息要么发送到原始目的地,要么转移到无效的消息通道。
路由器
ARouter
可能是一个不错的选择,但似乎没有办法将路由器应用于模式匹配的一组通道,所以我相信我必须将它单独应用于每个通道。我希望避免这种重复。
AspectJ 切入点
我想到的另一个选择是拆分 AspectJ 并在该方法上实施@Around
建议。AbstractMessageSendingTemplate.convertAndSend(destination, payload, postProcessor)
这似乎是侵入性的,但似乎它可以工作。如果有框架直接支持更好的选项,我会很高兴听到它。
带有效负载路由的公共输入通道
如果我找不到全局应用这种类型的路由逻辑的方法,那么另一种选择可能是通过单个通道路由所有入站 JMS 消息。可以将自定义Router
应用到该入站通道,该通道使用有效负载类型标头将消息引导到其正确的“数据类型”通道并将无效消息路由到验证错误通道。
问题
- 有没有办法将这种类型的消息转移应用于模式匹配的一组通道?
- 我是否错过了 Spring Integration 框架的一项重要功能,该功能将使我的考虑之一起作用?
- 如果没有,是否有比我提到的更好的 EIP 选项?
非常感谢!
spring-integration - Spring Cloud Stream @StreamListener 和 Spring Integration 的 Resequencer 模式
AFAIK Spring Cloud Stream 项目基于 Spring Integration。因此,我想知道是否有一种很好的方法可以在StreamListener
触发处理程序之前重新排序入站消息的子集?或者我是否需要IntegrationFlow
使用 Spring Integration 中的 XML 或 Java DSL 配置从头开始组装整个系统?
我的用例如下。大多数时候,我会在 Kafka 主题上处理入站消息。但是,一些事件必须根据CORRELATION_ID
、SEQUENCE_NUMBER
和SEQUENCE_SIZE
标头重新排序。换句话说,我想尽可能多地使用 StreamListener 并简单地为某些事件插入重新排序策略。
java - EIP/Apache Camel - 如何同时处理消息,但每组原子?
我有以下情况:
- 有固定数量的组。
- 有传入消息的 TCP 流。每条消息都与一个组相关。
我开始骆驼路线如下:
此 Camel 路由使用 TCP 流,解析每个传入消息的有效负载并将其转换为MyMessage
pojo,并group-identifier
在与消息对应的交换器上设置标头...
现在我想消费seda:process
如下:
- 属于同一组的消息不能同时执行。
- 属于不同组的消息可以同时执行。
- 每条消息都应该通过调用来执行
run()
。我想为此提供/定义一个ExecutorService
,所以我可以控制线程数。
我可以在这里应用哪些企业集成模式?如何将这些概念映射到 Camel?
我了解到 ActiveMQ 具有消息组的概念(http://activemq.apache.org/message-groups.html)。这可能会提供一种方法来确保同一组的两条消息永远不会同时执行。不过,我不确定仅为此引入 ActiveMQ 是不是矫枉过正。这也可以用“核心”骆驼/Java来实现吗?