HardikT
HardikT

Reputation: 751

camel route for opc-ua milo project

I am working on creating a Camel, Spring boot application that implements the OPC-UA connection. Till now, I was successfully able to run the examples obtained from Eclipse milo github repository.

Now, my task is to create a camel route that will connect to the opc-ua server that is running on a different machine, read data from there and store in a jms queue.

Till now, I am able to run the BrowseNodeExample and ReadNodeExample where I am connecting to a server simulator (Top Server V6). In the example code, when connecting to the server, the endpoint of the server is given as - "opc.tcp://127.0.0.1:49384/SWToolbox.TOPServer.V6"

Now in the camel routing piece of code, in the .configure() part, what shall I write in the .from() part. The piece of code is as -

@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());
    }

While searching for the solution I came across one option: milo-server:tcp://127.0.0.1:49384/SWToolbox.TOPServer.V6/nodeId=2&namespaceUri=http://examples.freeopcua.github.io. I tried that but it didn't work. In both the cases I get the below error:

ResolveEndpointFailedException: Failed to resolve endpoint: (endpoint given) due to: No component found with scheme: milo-server (or opc.tcp)

Upvotes: 1

Views: 1469

Answers (2)

Thomas W.
Thomas W.

Reputation: 814

The ResolveEndpointFailedException is quite clear, Camel cannot find the component. That means that the auto-discovery failed to load the definition in the META-INF directory.

Have you checked that the camel-milo jar is contained in your fat-jar/war?

As a workaround you can add the component manualy via

CamelContext context = new DefaultCamelContext();
context.addComponent("foo", new FooComponent(context));

http://camel.apache.org/how-do-i-add-a-component.html

or in your case

@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")
    ...
}

Furthermore be aware that milo-server starts an OPC UA server. As I understood your question you want to connect to an OPC UA server. Therefore you need the milo-client component.

camel-milo client at github

Upvotes: 1

Ivonet
Ivonet

Reputation: 2731

You might want to add the camel-opc component to your project.

I've found one on Github

and also milo version on maven central for the OPC-UA connection.

Hope that helps :-)

Upvotes: 1

Related Questions