Events and selective marshalling between nodes?

classic Classic list List threaded Threaded
2 messages Options
KJQ KJQ
Reply | Threaded
Open this post in threaded view
|

Events and selective marshalling between nodes?

Hello everyone,

I am not even sure how to phrase this so I will try to describe the
environment...

We have numerous embedded Ignite instances (server mode) that deploy into a
K8S cluster.  Between those instances we have Ignite events being raised for
PUT and EXPIRED.  We have at least one instance, also a part of the Ignite
cluster, which uses Drools and distributed compute (this works good so far).

The problem we are having is when the distributed compute node raises the
cache events to other nodes, they do not have those classes there.  For
example, Drools caches some stuff specific to it and when that event gets
raised to other nodes (who have no knowledge of Drools) an exception is of
course thrown.

So my questions are:

- Can I selectively choose what to raise the event for based on the type?
For example, check the event "value" and ignore if something I am not
concerned with and not raise it.

- Is the only way to share classes between nodes, whose Java applications
may not have knowledge of each other, through peer-classloading or
downloading a jar?  For example, projectB depends on projectA so it is aware
of A's classes but projectA has no knowledge of projectB in the event B
raises an event from its cached object to A.

- How does all of this play into Spring?  If I do somehow get the classes
into each node, do they have to be within the SpringContext (IoC configured)
or is having the classes available good enough?  This applies to using the
@SpringResource in something like a callable.

Any help or guidance is greatly appreciated.



-----
KJQ
--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/
KJQ
ilya.kasnacheev ilya.kasnacheev
Reply | Threaded
Open this post in threaded view
|

Re: Events and selective marshalling between nodes?

Hello!

I have looked up code, and it seems that if key or value can't be deserialized, it will be passed into event in BinaryObject form.

Is it not working for you? Can you show which errors you are getting?

Otherwise, you can try using rmtFilter with same considerations.

Otherwise, there is no way to peer load key/value classes yet.

Regards,
--
Ilya Kasnacheev


пт, 11 окт. 2019 г. в 04:26, KJQ <[hidden email]>:
Hello everyone,

I am not even sure how to phrase this so I will try to describe the
environment...

We have numerous embedded Ignite instances (server mode) that deploy into a
K8S cluster.  Between those instances we have Ignite events being raised for
PUT and EXPIRED.  We have at least one instance, also a part of the Ignite
cluster, which uses Drools and distributed compute (this works good so far).

The problem we are having is when the distributed compute node raises the
cache events to other nodes, they do not have those classes there.  For
example, Drools caches some stuff specific to it and when that event gets
raised to other nodes (who have no knowledge of Drools) an exception is of
course thrown.

So my questions are:

- Can I selectively choose what to raise the event for based on the type?
For example, check the event "value" and ignore if something I am not
concerned with and not raise it.

- Is the only way to share classes between nodes, whose Java applications
may not have knowledge of each other, through peer-classloading or
downloading a jar?  For example, projectB depends on projectA so it is aware
of A's classes but projectA has no knowledge of projectB in the event B
raises an event from its cached object to A.

- How does all of this play into Spring?  If I do somehow get the classes
into each node, do they have to be within the SpringContext (IoC configured)
or is having the classes available good enough?  This applies to using the
@SpringResource in something like a callable.

Any help or guidance is greatly appreciated.



-----
KJQ
--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/