gpt4 book ai didi

java - 是否可以使用 java 接口(interface)或 bean 启动 Camel 路线?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:22 25 4
gpt4 key购买 nike

我想设置一个 spring bean(通过接口(interface)或 bean 类)。我可以调用它来“开始”一条路线。

在这个简单的示例中,当我从代码中调用 sayHello("world") 时,我希望它将 sayHello 方法的返回值路由到将其写入文件的端点。

有谁知道这是否可能,或者如何去做?我知道我可以通过 CXF 公开相同的接口(interface)并使其工作,但我真的只想调用一个方法,而不是经历发送 jms 消息或调用 web 服务的麻烦。

public interface Hello{
public String sayHello(String value);
}

from("bean:helloBean").to("file:/data/outbox?fileName=hello.txt");

最佳答案

您可以使用 ProducerTemplate:

import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.springframework.stereotype.Component;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

@Component
public class HelloImpl implements Hello {

@Produce(uri = "direct:start")
private ProducerTemplate template;

@Override
public Object sayHello(String value) throws ExecutionException, InterruptedException {
Future future = template.asyncSendBody(template.getDefaultEndpoint(), value);
return future.get();
}
}

你的 Camel 路线应该是这样的:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="com.mycompany.camel"/>

<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<to uri="log:com.mycompany.camel?level=DEBUG"/>
</route>
</camelContext>

</beans>

关于java - 是否可以使用 java 接口(interface)或 bean 启动 Camel 路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3366052/

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