1

我正在创建一个实现 OPC-UA 连接的 Camel、Spring 引导应用程序。到目前为止,我已经成功地运行了从Eclipse milo github repository获得的示例。

现在,我的任务是创建一个骆驼路由,它将连接到在另一台机器上运行的 opc-ua 服务器,从那里读取数据并存储在 jms 队列中。

到现在为止,我能够运行BrowseNodeExampleReadNodeExample我连接到服务器模拟器(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)

4

2 回答 2

1

您可能希望将 camel-opc 组件添加到您的项目中。

我在Github上找到了一个

以及用于 OPC-UA 连接的maven Central 上的 milo 版本。

希望有帮助:-)

于 2017-12-11T10:44:37.277 回答
1

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 组件。

github上的camel-milo客户端

于 2017-12-20T07:01:01.277 回答