Igniters,

I was looking at IgniteEvents.remoteListen() and failed to understand how
it works. Can someone explain me semantics please?

1) What is the point of *local* listener in the method "*remote*Listen"?
Are we collecting events remotely and send them to the local node? If yes,
then this is not "remoteListen", it is "localListen" with additional remote
filters.

2) How does "IgnitePredicate<T> rmtFilter" argument work? JavaDoc says:
"It will be auto-unsubsribed on the node where event occurred in case if it
returns {@code false}."
Is this a filter that stops working when "false" is returned? If yes, this
is not a filter, I am afraid. It doesn't filter anything. This is something
else I cannot name.

To the contrast please look at IgniteMessaging.remoteListen() - clean and
consistent method.

Looks like we need to rethink this API. The closest concept is continuous
queries. It has a remote filter (which is really a filter) and a local
listener.

I would remove/deprecate "remoteListen" method and do something like this:

UUID listen(IgniteInClosure<Event> locLsnr, @Nullable
IgnitePredicate<Event> rmtFilter, bool autoUnsubscribe);
bool stopListen(UUID id);

Thoughts?

Reply via email to