gpt4 book ai didi

java - Apache Camel - 如何使用InputStream作为源?

转载 作者:行者123 更新时间:2023-11-30 03:58:51 24 4
gpt4 key购买 nike

我想做的事情看起来很简单,或者至少是一个常见的任务。然而,我无法找到任何示例,这一事实告诉我,我的处理方式是错误的。

我有一个 InputStream 我需要用作源。 InputStream 提供了我需要路由到一个或多个目标端点的文本行。 InputStream 的来源有点像黑匣子——它不是来自文件或 URL。我有最基本的流示例工作...使用 System.in 和 System.out:

public class InOutRoute extends RouteBuilder
{
@Override
public void configure() throws Exception
{
from("stream:in")
.to("stream:out");
}

}

我现在想做的就是用我得到的InputStream 替换stream:in。我认为这将是一个常见的操作,但显然我的想法是错误的。

(编辑)有关流的更多信息:我必须使用的这个“黑匣子”执行操作,然后通过 InputStream 提供有关这些操作的状态更新。当黑盒完成其操作后,我丢弃对 InputStream 的引用。一个潜在的复杂情况:我可能必须同时处理多个 InputStreams

最佳答案

那么您想从输入流进行路由吗?为此,您可以使用 bean 组件来调用返回输入流的 bean 方法。

public InputStream giveItToMe() {
...
}


from("bean:myBean?method=giveItToMe")
.to("stream:out");

请注意,当路由完成后,Camel 会再次调用 bean 上的方法(无限循环)。因此,如果您没有流,则要么阻止调用,要么返回 null,然后您需要在路由中过滤它,因为这样 InputStream 将为 null。

您还可以只使用 ProducerTemplate 并通过流调用 Camel 路由,当您想在 Camel 中路由流时,可以从那里获得流

public void someBusinessLogic() {
while (!done) {
InputStream is = ...
template.sendBody("direct:routeMe", is);

...
// logic to know if we should continue or break out
}
}

from("direct:routeMe")
.to("stream:out");

更多详情请访问

关于java - Apache Camel - 如何使用InputStream作为源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22420333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com