Vladimir, are their factories for the proposed listeners?

On Tue, Sep 12, 2017 at 7:52 AM, Alexey Goncharuk <
alexey.goncha...@gmail.com> wrote:

> Vladimir,
>
> Can you please clarify how the proposed API will work?
>
> My opinion is that our query API is big piece of ... you know, especially
> > ContinuousQuery. A lot of concepts and features are mixed in a single
> > entity, what makes it hard to understand and use. Let's finally deprecate
> > ContinuousQuery and design nice and consistent API. E.g.:
> >
> > interface IgniteCache {
> >     UUID addListener(CacheEntryListener listener)
> >     void removeListener(UUID listenerId);
> > }
> >
> > This method set's a listener on all nodes which will process event
> locally,
> > no network communication.
>
>
> Do I understand correctly that CacheEntryListener will have a method like
> onEvent() which will accept the cache event?
>
>
> > Now if you want semantics similar to existing
> > continuous queries, you use special entry listener type:
> >
> > class ContinuousQueryCacheEntryListener implements CacheEntryListener {
> >     ContinuousQueryRemoteFilter rmtFilter;
> >     ContinuousQueryRemoteTransformer rmtTransformer;
> >     ContinuousQueryLocalCallback locCb;
> > }
> >
> >
> This becomes confusing: while the ContinuousQueryCacheEntryListener itself
> has the onEvent() method, which is supposed to be called on event nodes, it
> also has a rmtFilter, which will also be called on event nodes. Will the
> onEvent() then invoked on the listener anyway, regardless of the filter
> result? Finally, the listener will have a local callback field, which will
> be called on the originating node. This sounds way more tricky to me than
> the current API.
>
>
> > Last, "initial query" concept should be dropped from "continuous query"
> > feature completely. It doesn't guarantee any kind of atomicity or
> > visibility wrt to cache events, so it adds no value. The same behavior
> > could be achieved as follows:
> >
> > cache.addListener(...)
> > QueryCursor cursor = cache.query(initialQuery);
> >
> >
> Agree with this.
>

Reply via email to