You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by solomon <au...@gmail.com> on 2017/06/08 10:52:31 UTC

Re: Apache-Ignite Example

Hi, 

I'm trying to listen from an mqtt topic which produces a json object and
store that data into apache Ignite's Cache using Apache camel contex, but
the data is not inserting to cache. 

my JSON data looks like this : {"id": 1, "data":"test"} 

and this is sample code snippet : 

         from("mqtt:bar?subscribeTopicName=test&host=tcp://localhost:1883") 
        .setHeader("id", new JsonPathExpression("$.id")) 
        .setHeader("data", new JsonPathExpression("$.data")) 
        .process(new Processor() { 
                public void process(Exchange exchange)throws Exception { 
                         exchange.getIn().setBody(
exchange.getIn().getBody(String.class)); 
                         System.out.println("Processing JSON Meassage: "+
exchange.getIn().getBody(String.class)); 
                } 
        }) 
        .to("ignite-cache:cache:myCacheName?operation=PUT"); 

Can anyone help me what I am missing. 

How to insert the Key-Value into Ignite's cache and query it later. 



--
View this message in context: http://camel.465427.n5.nabble.com/Apache-Ignite-Example-tp5800977p5802573.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Apache-Ignite Example

Posted by Claus Ibsen <cl...@gmail.com>.
I dont know what data type mqtt gives you, you can turn on tracer to
see that etc.
But you can also try to convert the data to a String.class before via
.convertBodyTo(String.class) assuming Ignite can store plain strings
and get them again via query.

On Fri, Jun 9, 2017 at 3:34 PM, solomon <au...@gmail.com> wrote:
> Hi Claus & Gary,
>
> I have set the header as .setHeader(IgniteConstants.IGNITE_CACHE_KEY, new
> JsonPathExpression("$.id"))
> now the data is getting inserted, when I checked the node entry in Ignite
> visor console count increases when message comes from the mqtt channel.
> However while querying the cache I'm getting the empty result.
>
> Do I need to map the object here or something I am missing ?
>
> Regards,
> Solomon
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Apache-Ignite-Example-tp5800977p5802804.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: Apache-Ignite Example

Posted by solomon <au...@gmail.com>.
Hi Claus & Gary,

I have set the header as .setHeader(IgniteConstants.IGNITE_CACHE_KEY, new
JsonPathExpression("$.id"))
now the data is getting inserted, when I checked the node entry in Ignite
visor console count increases when message comes from the mqtt channel.
However while querying the cache I'm getting the empty result.

Do I need to map the object here or something I am missing ?

Regards,
Solomon
  



--
View this message in context: http://camel.465427.n5.nabble.com/Apache-Ignite-Example-tp5800977p5802804.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Apache-Ignite Example

Posted by Gary Hodgson <ga...@gmail.com>.
Hey solomon, perhaps the following example helps?


    public class ExampleIgniteCacheTest extends CamelTestSupport {

        @EndpointInject(uri = "mock:result")
        protected MockEndpoint resultEndpoint;

        @Test
        public void testCache() throws Exception {

            String expectedBody = "abc";

            resultEndpoint.expectedBodiesReceived(expectedBody);

            template.sendBody("direct:doPut", "{\"id\":123,
\"data\":\"abc\"}");

            template.sendBodyAndHeader("direct:doGet", "",
IgniteConstants.IGNITE_CACHE_KEY, 123);

            resultEndpoint.assertIsSatisfied();
        }

        @Override
        protected RouteBuilder createRouteBuilder() {

            context.addComponent("ignite-cache",
IgniteCacheComponent.fromConfiguration(new IgniteConfiguration()));

            return new RouteBuilder() {
                @Override
                public void configure() {
                    from("direct:doPut")
                            .setHeader(IgniteConstants.IGNITE_CACHE_KEY,
new JsonPathExpression("$.id"))
                            .setBody(new JsonPathExpression("$.data"))
                            .log("putting: ${header.CamelIgniteCacheKey} =
${body}")
                            .to("ignite-cache:abc?operation=PUT");

                    from("direct:doGet")
                            .to("ignite-cache:abc?operation=GET")
                            .log("getting: ${header.CamelIgniteCacheKey} =
${body}")
                            .to("mock:result");
                }
            };
        }

    }

Regards,
Gary

On 8 June 2017 at 18:04, Claus Ibsen <cl...@gmail.com> wrote:

> You need to set a header with the key name
> CamelIgniteCacheKey
>
> See the IgniteConstants class for the headers
>
> On Thu, Jun 8, 2017 at 12:52 PM, solomon <au...@gmail.com>
> wrote:
> > Hi,
> >
> > I'm trying to listen from an mqtt topic which produces a json object and
> > store that data into apache Ignite's Cache using Apache camel contex, but
> > the data is not inserting to cache.
> >
> > my JSON data looks like this : {"id": 1, "data":"test"}
> >
> > and this is sample code snippet :
> >
> >          from("mqtt:bar?subscribeTopicName=test&host=
> tcp://localhost:1883")
> >         .setHeader("id", new JsonPathExpression("$.id"))
> >         .setHeader("data", new JsonPathExpression("$.data"))
> >         .process(new Processor() {
> >                 public void process(Exchange exchange)throws Exception {
> >                          exchange.getIn().setBody(
> > exchange.getIn().getBody(String.class));
> >                          System.out.println("Processing JSON Meassage: "+
> > exchange.getIn().getBody(String.class));
> >                 }
> >         })
> >         .to("ignite-cache:cache:myCacheName?operation=PUT");
> >
> > Can anyone help me what I am missing.
> >
> > How to insert the Key-Value into Ignite's cache and query it later.
> >
> >
> >
> > --
> > View this message in context: http://camel.465427.n5.nabble.
> com/Apache-Ignite-Example-tp5800977p5802573.html
> > Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2
>

Re: Apache-Ignite Example

Posted by Claus Ibsen <cl...@gmail.com>.
You need to set a header with the key name
CamelIgniteCacheKey

See the IgniteConstants class for the headers

On Thu, Jun 8, 2017 at 12:52 PM, solomon <au...@gmail.com> wrote:
> Hi,
>
> I'm trying to listen from an mqtt topic which produces a json object and
> store that data into apache Ignite's Cache using Apache camel contex, but
> the data is not inserting to cache.
>
> my JSON data looks like this : {"id": 1, "data":"test"}
>
> and this is sample code snippet :
>
>          from("mqtt:bar?subscribeTopicName=test&host=tcp://localhost:1883")
>         .setHeader("id", new JsonPathExpression("$.id"))
>         .setHeader("data", new JsonPathExpression("$.data"))
>         .process(new Processor() {
>                 public void process(Exchange exchange)throws Exception {
>                          exchange.getIn().setBody(
> exchange.getIn().getBody(String.class));
>                          System.out.println("Processing JSON Meassage: "+
> exchange.getIn().getBody(String.class));
>                 }
>         })
>         .to("ignite-cache:cache:myCacheName?operation=PUT");
>
> Can anyone help me what I am missing.
>
> How to insert the Key-Value into Ignite's cache and query it later.
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Apache-Ignite-Example-tp5800977p5802573.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2