/** * @param node Node. * @param cacheName Cache name. * @return Received events counter. */ private AtomicInteger registerListener(Ignite node, String cacheName) { ContinuousQuery qry = new ContinuousQuery(); final AtomicInteger cntr = new AtomicInteger(); qry.setLocalListener(new CacheEntryUpdatedListener() { @Override public void onUpdated(Iterable iterable) { for (Object evt : iterable) cntr.incrementAndGet(); } }); node.cache(cacheName).query(qry); return cntr; }
ContinuousQuery qry = new ContinuousQuery(); qry.setLocalListener(this); qry.setRemoteFilter(this); // Filter must be set always for correct resource release. qry.setPageSize(bufSize); qry.setTimeInterval(timeInterval); qry.setAutoUnsubscribe(autoUnsubscribe); qry.setInitialQuery(initialQry); cursor = cache.query(qry.setLocal(loc));
/** * Register a continuous query, that counts updates on the provided cache. * * @param cache Cache. * @param loc If {@code true}, then local continuous query will be registered. * @param updCntr Update counter. * @param rmtFilter Remote filter. */ private void listenToUpdates(IgniteCache<Integer, String> cache, boolean loc, AtomicInteger updCntr, CacheEntryEventSerializableFilter<Integer, String> rmtFilter) { ContinuousQuery<Integer, String> cq = new ContinuousQuery<>(); cq.setLocal(loc); cq.setLocalListener((evts) -> { for (CacheEntryEvent e : evts) updCntr.incrementAndGet(); }); if (rmtFilter != null) cq.setRemoteFilterFactory(FactoryBuilder.factoryOf(rmtFilter)); cache.query(cq); } }
/** * @param cache Ignite cache. * @throws Exception If fail. */ private void executeContinuousQuery(IgniteCache cache) throws Exception { ContinuousQuery<Integer, String> qry = new ContinuousQuery<>(); qry.setLocalListener( new CacheEntryUpdatedListener<Integer, String>() { @Override public void onUpdated(Iterable<CacheEntryEvent<? extends Integer, ? extends String>> events) throws CacheEntryListenerException { for (CacheEntryEvent<? extends Integer, ? extends String> event : events) System.out.println("Key = " + event.getKey() + ", Value = " + event.getValue()); } } ); final Class<CacheEntryEventSerializableFilter> remoteFilterClass = (Class<CacheEntryEventSerializableFilter>) ldr.loadClass("org.apache.ignite.tests.p2p.CacheDeploymentCacheEntryEventSerializableFilter"); qry.setRemoteFilterFactory(new ClassFilterFactory(remoteFilterClass)); cache.query(qry); for (int i = 0; i < 100; i++) cache.put(i, "Message " + i); }
/** * @throws Exception If failed. */ @Test public void testFilterException() throws Exception { IgniteCache<Integer, Integer> cache = grid(0).cache(DEFAULT_CACHE_NAME); ContinuousQuery<Integer, Integer> qry = new ContinuousQuery<>(); qry.setLocalListener(new CacheEntryUpdatedListener<Integer, Integer>() { @Override public void onUpdated(Iterable<CacheEntryEvent<? extends Integer, ? extends Integer>> evts) { // No-op. } }); qry.setRemoteFilter(new CacheEntryEventSerializableFilter<Integer, Integer>() { @Override public boolean evaluate(CacheEntryEvent<? extends Integer, ? extends Integer> evt) { throw new RuntimeException("Test error."); } }); try (QueryCursor<Cache.Entry<Integer, Integer>> ignored = cache.query(qry)) { for (int i = 0; i < 100; i++) cachePut(cache, i, i); } }
return; ContinuousQuery<Integer, Integer> qry = new ContinuousQuery<>(); qry.setLocalListener(new CacheEntryUpdatedListener<Integer, Integer>() { @Override public void onUpdated(Iterable<CacheEntryEvent<? extends Integer, ? extends Integer>> evts) { for (CacheEntryEvent<? extends Integer, ? extends Integer> e : evts) { qry.setPageSize(10); qry.setTimeInterval(3000);
/** * @throws Exception If failed. */ private void doTest(boolean loc) throws Exception { try { IgniteCache<String, Integer> cache = startGrid(0).cache(DEFAULT_CACHE_NAME); ContinuousQuery<String, Integer> qry = new ContinuousQuery<>(); final AtomicInteger cnt = new AtomicInteger(); final CountDownLatch latch = new CountDownLatch(10); qry.setLocalListener(new CacheEntryUpdatedListener<String, Integer>() { @Override public void onUpdated(Iterable<CacheEntryEvent<? extends String, ? extends Integer>> evts) throws CacheEntryListenerException { for (CacheEntryEvent<? extends String, ? extends Integer> evt : evts) { cnt.incrementAndGet(); latch.countDown(); } } }); cache.query(qry.setLocal(loc)); startGrid(1); awaitPartitionMapExchange(); for (int i = 0; i < 10; i++) cache.put("key" + i, i); assert latch.await(5000, TimeUnit.MILLISECONDS); assertEquals(10, cnt.get()); } finally { stopAllGrids(); } }
ContinuousQuery qry = new ContinuousQuery(); qry.setLocalListener(new CacheEntryUpdatedListener() { @Override public void onUpdated(Iterable evts) { qry.setRemoteFilterFactory(FactoryBuilder.factoryOf(CacheTestRemoteFilter.class)); qry.setAutoUnsubscribe(false);
/** * @throws Exception If failed. */ @Test public void testCacheContinuousQueryReconnect() throws Exception { Ignite client = grid(serverCount()); assertTrue(client.cluster().localNode().isClient()); IgniteCache<Object, Object> clientCache = client.getOrCreateCache(new CacheConfiguration<>(DEFAULT_CACHE_NAME)); CacheEventListener lsnr = new CacheEventListener(); ContinuousQuery<Object, Object> qry = new ContinuousQuery<>(); qry.setAutoUnsubscribe(true); qry.setLocalListener(lsnr); QueryCursor<?> cur = clientCache.query(qry); for (int i = 0; i < 5; i++) { log.info("Iteration: " + i); continuousQueryReconnect(client, clientCache, lsnr); } log.info("Close cursor, should not get cache events anymore."); cur.close(); lsnr.latch = new CountDownLatch(1); clientCache.put(3, 3); assertFalse(lsnr.latch.await(3000, MILLISECONDS)); }
IgniteCache<Integer, Integer> cache = grid(0).cache(DEFAULT_CACHE_NAME); ContinuousQuery<Integer, Integer> qry = new ContinuousQuery<>(); qry.setInitialQuery(new ScanQuery<>(new P2<Integer, Integer>() { @Override public boolean apply(Integer k, Integer v) { return k >= 5; qry.setLocalListener(new CacheEntryUpdatedListener<Integer, Integer>() { @Override public void onUpdated(Iterable<CacheEntryEvent<? extends Integer, ? extends Integer>> evts) { assert false;
Ignite srv1 = startGrid(0); ContinuousQuery<Object, Object> qry = new ContinuousQuery<>(); qry.setLocalListener(new CacheEntryUpdatedListener<Object, Object>() { @Override public void onUpdated(Iterable iterable) throws CacheEntryListenerException { qry.setAutoUnsubscribe(false); qry.setRemoteFilter(new CacheEntryEventSerializableFilter<Object, Object>() { @Override public boolean evaluate(CacheEntryEvent<?, ?> event) throws CacheEntryListenerException { cnt.incrementAndGet();
final ContinuousQuery qry = new ContinuousQuery(); qry.setRemoteFilterFactory(new Factory<CacheEntryEventFilter>() { @Override public CacheEntryEventFilter create() { return null; qry.setRemoteFilter(new CacheEntryEventSerializableFilter() { @Override public boolean evaluate(CacheEntryEvent event) throws CacheEntryListenerException { return false; qry.setLocalListener(new CacheEntryUpdatedListener() { @Override public void onUpdated(Iterable iterable) throws CacheEntryListenerException {
final ContinuousQuery<Integer, MarshallerCheckingEntry> qry = new ContinuousQuery<>(); qry.setInitialQuery(scanQry); qry.setRemoteFilterFactory(new DummyEventFilterFactory<>()); qry.setLocalListener(new CacheEntryUpdatedListener<Integer, MarshallerCheckingEntry>() { @Override public void onUpdated( final Iterable<CacheEntryEvent<? extends Integer, ? extends MarshallerCheckingEntry>> evts)
ContinuousQuery<Integer, Integer> qry = new ContinuousQuery<>(); qry.setLocalListener(new CacheEntryUpdatedListener<Integer, Integer>() { @Override public void onUpdated(Iterable<CacheEntryEvent<? extends Integer, ? extends Integer>> evts) { for (CacheEntryEvent<? extends Integer, ? extends Integer> e : evts) { qry.setPageSize(5);
final CountDownLatch latch = new CountDownLatch(2); ContinuousQuery<Object, Object> qry = new ContinuousQuery<>(); qry.setIncludeExpired(true); qry.setLocalListener(new CacheEntryUpdatedListener<Object, Object>() { @Override public void onUpdated(Iterable<CacheEntryEvent<?, ?>> evts) { for (CacheEntryEvent<?, ?> e : evts) {
/** * Creates new continuous query. */ public ContinuousQuery() { setPageSize(DFLT_PAGE_SIZE); }
/** * @param <K> Key type. * @param <V> Value type. * @return New instance of continuous query. */ protected <K, V> AbstractContinuousQuery<K, V> createQuery() { return new ContinuousQuery<>(); }
@Override public Object call() throws Exception { q.setTimeInterval(-1); return null; } },
final ContinuousQuery<Integer, String> qry1 = new ContinuousQuery<>(); final ContinuousQuery<Integer, String> qry2 = new ContinuousQuery<>(); qry1.setRemoteFilterFactory(new DummyEventFilterFactory<>()); qry2.setRemoteFilterFactory(new DummyEventFilterFactory<>()); final CountDownLatch latch2 = new CountDownLatch(10); qry1.setLocalListener(new CacheEntryUpdatedListener<Integer, String>() { @Override public void onUpdated( final Iterable<CacheEntryEvent<? extends Integer, ? extends String>> evts) throws CacheEntryListenerException { qry2.setLocalListener(new CacheEntryUpdatedListener<Integer, String>() { @Override public void onUpdated( final Iterable<CacheEntryEvent<? extends Integer, ? extends String>> evts) throws CacheEntryListenerException {
IgniteCache<Integer, Integer> cache = grid(0).cache(DEFAULT_CACHE_NAME); ContinuousQuery<Integer, Integer> qry = new ContinuousQuery<>(); qry.setLocalListener(new CacheEntryUpdatedListener<Integer, Integer>() { @Override public void onUpdated(Iterable<CacheEntryEvent<? extends Integer, ? extends Integer>> evts) { for (CacheEntryEvent<? extends Integer, ? extends Integer> e : evts) { qry.setRemoteFilter(new CacheEntryEventSerializableFilter<Integer,Integer>() { @Override public boolean evaluate(CacheEntryEvent<? extends Integer,? extends Integer> evt) { return evt.getKey() > 2;