private List<KeyValue<Windowed<String>, Long>> fetchSessionsFromLocalStore(final String userId, final ReadOnlySessionStore<String, Long> playEventsPerSession) { final List<KeyValue<Windowed<String>, Long>> results = new ArrayList<>(); try (final KeyValueIterator<Windowed<String>, Long> iterator = playEventsPerSession.fetch(userId)) { iterator.forEachRemaining(results::add); } return results; }
@Override public List<Stream> getAllStreams() { List<Stream> streamList = new ArrayList<>(); log.info("Pulling stream information from local instance's state-store"); kStreams.getAllStreams().forEachRemaining(avroStream -> streamList.add(AvroToJsonDTO.convertAvroToJson(avroStream.value))); return streamList; }
/** Saves the `lastAvgs` map to the state store. * * {@inheritDoc} */ @Override public void punctuate(long timestamp) { // Print the contents of the state store. state.all().forEachRemaining( kv -> System.out.println(System.currentTimeMillis() + " PUNCTUATE: " + kv.key + ", " + kv.value)); // Foward the new average. state.all().forEachRemaining( kv -> context.forward(kv.key, kv.value, "FAST-sink")); } // Close punctuate.
@Override public Map<String, OpennmsModelProtos.Alarm> getAlarms() { final Map<String, OpennmsModelProtos.Alarm> alarmsByReductionKey = new LinkedHashMap<>(); getAlarmTableNow().all().forEachRemaining(kv -> { try { alarmsByReductionKey.put(kv.key, kv.value != null ? OpennmsModelProtos.Alarm.parseFrom(kv.value) : null); } catch (InvalidProtocolBufferException e) { LOG.error("Failed to parse alarm for bytes at reduction key '{}'. Alarm will be empty in map.", kv.key); alarmsByReductionKey.put(kv.key, null); } }); return alarmsByReductionKey; }
@Override public Map<String, OpennmsModelProtos.Alarm> getAlarms() { final Map<String, OpennmsModelProtos.Alarm> alarmsByReductionKey = new LinkedHashMap<>(); getAlarmTableNow().all().forEachRemaining(kv -> { try { alarmsByReductionKey.put(kv.key, kv.value != null ? OpennmsModelProtos.Alarm.parseFrom(kv.value) : null); } catch (InvalidProtocolBufferException e) { LOG.error("Failed to parse alarm for bytes at reduction key '{}'. Alarm will be empty in map.", kv.key); alarmsByReductionKey.put(kv.key, null); } }); return alarmsByReductionKey; }
@Override Supplier<List<DependencyLink>> query() { return () -> { try { ReadOnlyKeyValueStore<String, DependencyLink> store = kafkaStreams.store(storeName, QueryableStoreTypes.keyValueStore()); List<DependencyLink> dependencyLinks = new ArrayList<>(); store.all().forEachRemaining(dependencyLink -> dependencyLinks.add(dependencyLink.value)); return dependencyLinks; } catch (Exception e) { LOG.error("Error looking up for dependencies", e); return new ArrayList<>(); } }; }
/** Forwards the values in the state store downstream. * * {@inheritDoc} */ @Override public void punctuate(long timestamp) { state.all().forEachRemaining( kv -> context.forward(kv.key, kv.value, type + "-sink")); } // Close punctuate.
@Override Supplier<List<String>> query() { return () -> { try { ReadOnlyKeyValueStore<String, Set<String>> store = kafkaStreams.store(storeName, QueryableStoreTypes.keyValueStore()); List<String> keys = new ArrayList<>(); store.all().forEachRemaining(keyValue -> keys.add(keyValue.key)); return keys; } catch (Exception e) { LOG.error("Error looking up services", e); return new ArrayList<>(); } }; }
/** Initializes the state store with the name "FAST-store", where * `type` is the type specified in the constructor. * * {@inheritDoc} */ @Override @SuppressWarnings("unchecked") public void init(ProcessorContext context) { this.context = context; // Schedules the `punctuate` method for every second. this.context.schedule(1000L); state = (KeyValueStore) context.getStateStore("FAST-store"); // Print the contents of the state store. state.all().forEachRemaining( kv -> System.out.println(System.currentTimeMillis() + " INIT: " + kv.key + ", " + kv.value)); } // Close init.
@Override public void punctuate(long timestamp) { try (KeyValueIterator<String, Integer> iterator = this.kvStore.all()) { iterator.forEachRemaining(entry -> { context.forward(entry.key, entry.value); this.kvStore.delete(entry.key); }); } context.commit(); }
iterator.forEachRemaining(kv -> { ObjectNode node = JsonNodeFactory.instance.objectNode(); node.put("account", kv.key);