我正在创建一个实现OPC-UA连接的Camel,Spring启动应用程序。直到现在,我已成功运行从Eclipse milo github repository获得的示例。
现在,我的任务是创建一个camel路由,它将连接到另一台机器上运行的opc-ua服务器,从那里读取数据并存储在jms队列中。
直到现在,我能够运行 BrowseNodeExample 和 ReadNodeExample ,我将连接到服务器模拟器(Top Server V6)。在示例代码中,连接到服务器时,服务器的端点为 - "opc.tcp://127.0.0.1:49384/SWToolbox.TOPServer.V6"
现在在骆驼路由代码段中,在.configure()
部分,我将在.from()
部分写下什么。这段代码是 -
@Override
public void configure() throws Exception {
from("opc.tcp://127.0.0.1:49384/SWToolbox.TOPServer.V6")
.process(opcConnection)
.split(body().tokenize(";"))
.to(opcBean.getKarafQueue());
}
在搜索解决方案时,我遇到了一个选项:milo-server:tcp://127.0.0.1:49384/SWToolbox.TOPServer.V6/nodeId=2&namespaceUri=http://examples.freeopcua.github.io
。我试过了,但它没有用。在这两种情况下,我得到以下错误:
ResolveEndpointFailedException:无法解析端点:(端点 由于:没有找到方案的组件:milo-server (或。) opc.tcp)
答案 0 :(得分:0)
答案 1 :(得分:0)
ResolveEndpointFailedException非常清楚,Camel找不到该组件。这意味着自动发现无法在META-INF目录中加载定义。
你有没有检查过你的胖罐/战争中是否含有骆驼 - 米洛罐?
作为一种解决方法,您可以通过
手动添加组件CamelContext context = new DefaultCamelContext();
context.addComponent("foo", new FooComponent(context));
http://camel.apache.org/how-do-i-add-a-component.html
或在你的情况下
@Override
public void configure() throws Exception {
getContext().addComponent("milo-server", new org.apache.camel.component.milo.server.MiloServerComponent());
from("milo-server:tcp://127.0.0.1:49384/SWToolbox.TOPServer.V6/nodeId=2&namespaceUri=http://examples.freeopcua.github.io")
...
}
此外请注意,milo-server启动OPC UA服务器。据我所知,您想要连接到OPC UA服务器。因此,您需要milo-client组件。