标签: apache-camel

如何将文件拆分为Camel中的行,但以不同方式处理第一行

我正在使用tokenizer将文件拆分为行:

.split().tokenize("\n", 1)
Run Code Online (Sandbox Code Playgroud)

但是,我需要处理的一些文件将包含一个标题行,需要对标准行进行不同的处理.有没有一种简单的方法来读取第一行,处理它,然后拆分剩余的行?

apache-camel

12
推荐指数
1
解决办法
5402
查看次数

骆驼 - 使用结束()

对每条路线使用end()是最佳做法吗?

以下作品:

from("jms:some-queue")      
    .beanRef("bean1", "method1")
    .beanRef("bean2", "method2")
Run Code Online (Sandbox Code Playgroud)

这样,

from("jms:some-queue")      
    .beanRef("bean1", "method1")
    .beanRef("bean2", "method2")
    .end()
Run Code Online (Sandbox Code Playgroud)

java spring apache-camel

12
推荐指数
2
解决办法
7952
查看次数

Camel advice在更改编织语句的顺序时表现不同

我有以下路线用于演示目的

from("direct:external")
    .routeId("external")
    .to("http4://www.third-party.com/foo").id("ext");
Run Code Online (Sandbox Code Playgroud)

为了测试,我想*用直接替换http4:端点:端点*在路由末尾添加一个mock:端点进行验证

我添加了以下adviceWithRouteBuilder

context.getRouteDefinition("external").adviceWith(context, new AdviceWithRouteBuilder() {
    @Override
    public void configure() throws Exception {
        weaveAddLast().to("mock:result");
        weaveByToUri(".*http4://.*")
            .replace()
            .to("direct:foo");
    }
});
Run Code Online (Sandbox Code Playgroud)

这个似乎工作,但如果我改变weave*语句的顺序,就像这样

public void configure() throws Exception {
    weaveByToUri(".*http4://.*")
        .replace()
        .to("direct:foo");
    weaveAddLast().to("mock:result");
}
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误

java.lang.IllegalArgumentException:在路由中没有匹配:*的输出:Route(external)[[From [direct:external]] - > [pipeline - > [[To [direct:foo]]]]]

我实际上希望得到相同的结果,与订单无关.

apache-camel

12
推荐指数
1
解决办法
1380
查看次数

具有ActiveMQ群集的Apache Camel

我正在尝试确定用于集群化ServiceMix 3.3.1/Camel 2.1/AMQ 5.3应用程序的选项.我正在执行高容量消息处理,我需要集群以实现高可用性和水平可伸缩性.

这基本上就是我的应用程序所做的... HTTP-> QUEUE-> PROCESS-> DATABASE-> TOPIC

从( "码头:http://0.0.0.0/inbound ").要(" ActiveMQ的:inboundQueue");

from("activemq:inboundQueue?maxConcurrentConsumers = 50").process(decode()).process(transform()).process(validate()).process(saveToDatabase()).to("activemq:topic:ouboundTopic" );

所以,我已经阅读了所有ServiceMix和AcitveMQ集群页面,但我仍然不确定要走哪条路.

我知道我可以使用HA的主/从设置,但这对可伸缩性没有帮助.

我读过有关经纪人的网络,但我不确定这是如何适用的.例如,如果我在群集中的多个节点上部署相同的Camel路由,它们将如何"完全"交互?如果我将HTTP生成器指向一个节点(NodeA),哪些消息将被发送到NodeB?是否在节点A/B之间共享队列/主题...如果是,如何分割或复制消息?另外,外部客户端如何准确地订阅我的"outboundTopic"(并获取所有消息等)?

或者,我一直在想我应该在多个ServiceMix实例之间共享代理.那将是更清洁的,因为只需要管理一组队列/主题,我可以通过添加更多实例来扩展.但是,现在我受限于单个经纪人的可扩展性,我又回到了单点故障......

如果有人能为我澄清权衡......我会很感激.

activemq-classic cluster-computing apache-camel

11
推荐指数
1
解决办法
7043
查看次数

什么是最好的Apache Camel路由视觉设计师?

那么,谁可以建议一些优秀的Apache Camel路由视觉设计师?

想知道是否有一些非常好的Apache Camel路由可视化器(看到一些maven2驼峰可视化器,但它产生了奇怪的结果).

apache-camel

11
推荐指数
1
解决办法
2万
查看次数

使用Camel的表达式语言获取并格式化昨天的日期

我在Camel的路径中使用日期:

fileName=${date:now:dd-MM-yyyy}
Run Code Online (Sandbox Code Playgroud)

但我现在需要的是 - 1天.那可能吗?

apache-camel

11
推荐指数
2
解决办法
1万
查看次数

如何使用Camel组件File2中的include参数通过扩展来过滤文件

我需要扩展名最简单的过滤器:fe文件20120523.173227.CustomerMaster05092012.QWERTY.xml route:

<from uri="file://{{fdr.folder.working.url}}&amp;include=*.xml"/>
Run Code Online (Sandbox Code Playgroud)

不起作用:

在索引0附近悬挂元字符'*'

WARN - file://root_folder/working/) [FileConsumer] Consumer Consumer[file://root_folder/working/?delay=1000&delete=true&idempotent=false&include=*.xml&initialDelay=1000&readLock=changed] failed polling endpoint: Endpoint[file://root_folder/working/?delay=1000&delete=true&idempotent=false&include=*.xml&initialDelay=1000&readLock=changed]. Will try again at next poll. Caused by: [java.util.regex.PatternSyntaxException - Dangling meta character '*' near index 0
*.xml
^]
java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*.xml
^
    at java.util.regex.Pattern.error(Pattern.java:1713)
    at java.util.regex.Pattern.sequence(Pattern.java:1878)
    at java.util.regex.Pattern.expr(Pattern.java:1752)
    at java.util.regex.Pattern.compile(Pattern.java:1460)
    at java.util.regex.Pattern.<init>(Pattern.java:1133)
    at java.util.regex.Pattern.compile(Pattern.java:823)
    at java.util.regex.Pattern.matches(Pattern.java:928)
    at java.lang.String.matches(String.java:2090)
    at org.apache.camel.component.file.GenericFileConsumer.isMatched(GenericFileConsumer.java:458)
    at org.apache.camel.component.file.GenericFileConsumer.isValidFile(GenericFileConsumer.java:395)
    at org.apache.camel.component.file.FileConsumer.pollDirectory(FileConsumer.java:94)
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:107)
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:142)
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:92)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
    at …
Run Code Online (Sandbox Code Playgroud)

java file apache-camel

11
推荐指数
3
解决办法
2万
查看次数

在Apache Camel中关闭消息

希望这听起来并不荒谬,但我怎么能故意丢弃 Camel中的消息呢?

到目前为止,我已将它们发送到Log-Component,但同时我甚至不想记录撤销.

Camel中是否有/ dev/null端点?

apache-camel

11
推荐指数
1
解决办法
4917
查看次数

骆驼生产者消费混乱

Camel in Action书中的生产者和消费者的定义对我来说有点混乱.我已经读过类似问题的其他两个答案,但我仍然觉得不是那样的.

生产者是Camel抽象,它指的是能够创建消息并将消息发送到端点的实体.图1.10说明了生产者适应其他Camel概念的位置.当需要将消息发送到端点时,生产者将创建交换并使用与该特定端点兼容的数据填充它.例如,a FileProducer会将消息正文写入文件.甲JmsProducer,在另一方面,将映射骆驼消息到javax.jms.Message其发送到JMS目的地之前.这是Camel的一个重要特性,因为它隐藏了与特定传输交互的复杂性.

使用者是接收生产者生成的消息的服务,将它们包装在交换中,然后发送它们进行处理.消费者是在Camel中路由交换的来源.回顾图1.10,我们可以看到消费者与其他Camel概念的契合程度.要创建新的交换,消费者将使用包装正在使用的有效负载的端点.然后使用处理器使用路由引擎启动Camel中的交换路由.

谁在实际创建交易所?典型的沟通渠道的哪一方是生产者和消费者?从上面的文字我不能真正说出谁对此负责.如果有人可以提供一张照片(书中的那张照片对我来说还不清楚),那将是很棒的,其中究竟是生产者和消费者,并解释他们如何以简单的方式工作.也许一些例子也会有用.

好吧也许最好举一个例子,有人可以告诉我它是如何工作的.想象一下,我们想要从文件夹中获取文件并将它们放在JMS队列中,然后从那里发送它们以进行进一步处理,最终保存在磁盘上.

根据我的照片,生产者,消费者到底在哪里?我意识到什么是组件和端点.

java apache-camel

11
推荐指数
2
解决办法
4034
查看次数

Apache Camel vs Apache Kafka

据我所知,Apache Kafka是异步消息传递平台,Apache Camel是一个实现企业集成模式的平台.

那么,Apache Camel和Apache Kafka的实际差异是什么?我们计划用Apache Camel实现这个系统,这个系统比较容易,但是我们的客户想要Apache Kafka而不是理性的.

选择Apache Kafka实现消息队列功能有什么好处,这也可以用Apache Camel实现?我担心Kafka会给项目带来不必要的开销.我们比较苹果和橘子吗?

我们需要的是简单的API来设置和使用群集消息队列.我们的初始计划是使用Camel在集群JMS或ActiveMQ队列上使用/生成.Kafka如何让这项工作更轻松?无论哪种情况,应用程序本身都可以在WebLogic服务器上运行.

消息传递是点对点类型,其中有多个相同服务的实例在运行,但只有一个实例应该处理消息并根据负载平衡策略发出结果.消息队列也是群集的,因此服务实例或队列实例的故障都不是SPOF.

apache messaging jms apache-camel apache-kafka

11
推荐指数
2
解决办法
1万
查看次数