apache-camel - 如何在 apache camel DSL 中从端点动态返回
问题描述
这是我的代码
from("google-pubsub:123:subscription1?maxMessagesPerPoll=3 & concurrentConsumers=5" ).routeId("myroute")
.process(new ProducerProcessor())
to("google-pubsub:123:topic1")
;
在我上面的代码中,我想让它成为通用的 from 通道。基本上它应该能够使用来自 good-pubsub 的数据,或者可能来自文件或 JMS 队列。因此,取决于我想要返回不同的参数来自频道。如下所示
private RouteDefinition fromChannel(String parameter) {
if (parameter is "google" then
return from("google-pubsub:123:subscription1?maxMessagesPerPoll=3 & concurrentConsumers=5" )
if (parameter is "file" then
return from(/my/fileFolder/)).split(body().tokenize("\n")).streaming().parallelProcessing();
}
我试过这个,但我在 fromChannel 方法中得到空指针异常。如果你有更好的想法,请告诉我。
解决方案
根据评论重写
例如,您可以为每种输入类型创建(静态)模板路由,并根据配置的端点列表生成路由。
我在这个答案中描述了这样一个端点配置和路由生成场景。
像这样,您可以为每个文件路由生成拆分部分,并为其他路由类型生成任何其他专业。
所有这些输入路由都在其末端路由到公共处理路由
.from(pubsubEndpoint)
.to("direct:genericProcessingRoute")
.from(fileEndpoint)
.split(body()
.tokenize("\n"))
.streaming()
.parallelProcessing()
.to("direct:genericProcessingRoute")
.from("direct:genericProcessingRoute")
... [generic processing]
.to("google-pubsub:123:topic1")
围绕公共核心路由的多个输入(和输出)路由称为六边形架构,Camel 非常适合此架构。
推荐阅读
- c# - 如何确定 NuGet 包中二进制文件的行为
- tensorflow - .tflite 可以捕获 tf.hub.text_embedding_column() 进程吗?
- sap - 带有数据样本的 SAP DEMO DB
- javascript - 如何使用“this”更改 javascript 中的图像源?
- r - 在 SUSElinux 服务器上安装 R 包 - FSELCETOR
- mps - 从内联模板访问节点的属性/子节点
- php - 是否有与 Java 的 ServletRequest.getParameterValues() 等效的 PHP?
- javascript - 重建 Highchart 不起作用
- java - 向纸牌游戏添加功能
- c# - 新对象:找不到类型 [Microsoft.SqlServer.DtsS.Runtime.Application]:验证程序集是否包含