private ReadOnlyKeyValueStore<String, Order> ordersStore() { return streams.store(ORDERS_STORE_NAME, QueryableStoreTypes.keyValueStore()); }
/** * Waits until the named store is queryable and, once it is, returns a reference to the store. * * Caveat: This is a point in time view and it may change due to partition reassignment. * That is, the returned store may still not be queryable in case a rebalancing is happening or * happened around the same time. This caveat is acceptable for testing purposes when only a * single `KafkaStreams` instance of the application is running. * * @param streams the `KafkaStreams` instance to which the store belongs * @param storeName the name of the store * @param queryableStoreType the type of the (queryable) store * @param <T> the type of the (queryable) store * @return the same store, which is now ready for querying (but see caveat above) */ public static <T> T waitUntilStoreIsQueryable(final String storeName, final QueryableStoreType<T> queryableStoreType, final KafkaStreams streams) throws InterruptedException { while (true) { try { return streams.store(storeName, queryableStoreType); } catch (InvalidStateStoreException ignored) { // store not yet ready for querying Thread.sleep(50); } } }
@GET() @Path("/song/{id}") @Produces(MediaType.APPLICATION_JSON) public SongBean song(@PathParam("id") Long songId) { final ReadOnlyKeyValueStore<Long, Song> songStore = streams.store(KafkaMusicExample.ALL_SONGS, QueryableStoreTypes.<Long, Song>keyValueStore()); final Song song = songStore.get(songId); if (song == null) { throw new NotFoundException(String.format("Song with id [%d] was not found", songId)); } return new SongBean(song.getArtist(), song.getAlbum(), song.getName()); }
/** * Performs a range query on a KeyValue Store and converts the results into a List of * {@link KeyValueBean} * @param storeName The store to query * @param rangeFunction The range query to run, i.e., all, from(start, end) * @return List of {@link KeyValueBean} */ private List<KeyValueBean> rangeForKeyValueStore(final String storeName, final Function<ReadOnlyKeyValueStore<String, Long>, KeyValueIterator<String, Long>> rangeFunction) { // Get the KeyValue Store final ReadOnlyKeyValueStore<String, Long> store = streams.store(storeName, QueryableStoreTypes.keyValueStore()); final List<KeyValueBean> results = new ArrayList<>(); // Apply the function, i.e., query the store final KeyValueIterator<String, Long> range = rangeFunction.apply(store); // Convert the results while (range.hasNext()) { final KeyValue<String, Long> next = range.next(); results.add(new KeyValueBean(next.key, next.value)); } return results; }
final ReadOnlyWindowStore<String, Long> store = streams.store(storeName, QueryableStoreTypes.<String, Long>windowStore()); if (store == null) {
/** * Get a key-value pair from a KeyValue Store * @param storeName the store to look in * @param key the key to get * @return {@link KeyValueBean} representing the key-value pair */ @GET @Path("/keyvalue/{storeName}/{key}") @Produces(MediaType.APPLICATION_JSON) public KeyValueBean byKey(@PathParam("storeName") final String storeName, @PathParam("key") final String key) { HostStoreInfo hostStoreInfo = streamsMetadataForStoreAndKey(storeName, key); if (!thisHost(hostStoreInfo)){ return fetchByKey(hostStoreInfo, "state/keyvalue/"+storeName+"/"+key); } // Lookup the KeyValueStore with the provided storeName final ReadOnlyKeyValueStore<String, Long> store = streams.store(storeName, QueryableStoreTypes.<String, Long>keyValueStore()); if (store == null) { throw new NotFoundException(); } // Get the value from the store final Long value = store.get(key); if (value == null) { throw new NotFoundException(); } return new KeyValueBean(key, value); }
streams.store(storeName, QueryableStoreTypes.<String, KafkaMusicExample.TopFiveSongs>keyValueStore()); } else { final ReadOnlyKeyValueStore<Long, Song> songStore = streams.store(KafkaMusicExample.ALL_SONGS, QueryableStoreTypes.<Long, Song>keyValueStore()); final Song song = songStore.get(songPlayCount.getSongId());
try { songsStore = streams.store(KafkaMusicExample.ALL_SONGS, QueryableStoreTypes.<Long, Song>keyValueStore()); return songsStore.all().hasNext(); } catch (Exception e) {
try { songsStore = streams.store(KafkaMusicExample.ALL_SONGS, QueryableStoreTypes.<Long, Song>keyValueStore()); return songsStore.all().hasNext(); } catch (Exception e) {
streams.store(SessionWindowsExample.PLAY_EVENTS_PER_SESSION, QueryableStoreTypes.<String, Long>sessionStore());
verifyAllCustomersInStore(customers, streamInstanceOne.store(CUSTOMER_STORE, QueryableStoreTypes.keyValueStore())); verifyAllCustomersInStore(customers, streamInstanceTwo.store(CUSTOMER_STORE, QueryableStoreTypes.keyValueStore())); verifyAllProductsInStore(products, streamInstanceOne.store(PRODUCT_STORE, QueryableStoreTypes.keyValueStore())); verifyAllProductsInStore(products, streamInstanceTwo.store(PRODUCT_STORE, QueryableStoreTypes.keyValueStore()));
streams.store(storeName, QueryableStoreTypes.keyValueStore()); KeyValueIterator<String, String> keyValueIterator = readOnlyKeyValueStore.all(); assertThat(keyValueIterator).containsExactlyElementsOf(expectedResultsForJoinStateStore);
private ReadOnlyKeyValueStore<String, byte[]> getAlarmTableNow() throws InvalidStateStoreException { return streams.store(ALARM_STORE_NAME, QueryableStoreTypes.keyValueStore()); }
@Override public Call<List<List<Span>>> getTraces(QueryRequest request) { ReadOnlyKeyValueStore<String, List<Span>> traceStore = processStreams.store(tracesStoreName, QueryableStoreTypes.keyValueStore()); IndexStateStore indexStateStore = indexStreams.store(indexStoreName, new IndexStoreType()); return new GetTracesCall(indexStateStore, request, traceStore); }
@Override public void start() { streams.start(); log.info("Stream Registry KStreams started."); log.info("Stream Registry State Store Name: {}",stateStoreName); view = streams.store(stateStoreName, QueryableStoreTypes.keyValueStore()); }
@Override public void start() { infraKStreams.start(); log.info("Infrastructure Manager KStream is started"); log.info("Infra Manager State Store Name: {}", infraStateStoreName); store = infraKStreams.store(infraStateStoreName, QueryableStoreTypes.keyValueStore()); }
@Override Supplier<List<Span>> query() { return () -> { try { ReadOnlyKeyValueStore<String, List<Span>> traceStore = kafkaStreams.store(storeName, QueryableStoreTypes.keyValueStore()); return traceStore.get(traceId); } catch (Exception e) { LOG.error("Error getting trace with ID {}", traceId, e); return null; } }; }
@Override public Iterable<KeyValue<K, VV>> result() { return () -> streams.store(solutionSetStore, QueryableStoreTypes.<K, VV>keyValueStore()).all(); }
public static <K, V> Map<K, V> mapFromStore(KafkaStreams streams, String storeName) { final ReadOnlyKeyValueStore<K, V> store = streams.store( storeName, QueryableStoreTypes.keyValueStore()); final KeyValueIterator<K, V> all = store.all(); Map<K, V> result = new HashMap<>(); while (all.hasNext()) { KeyValue<K, V> next = all.next(); result.put(next.key, next.value); } return result; } }
public static <K, V> List<KeyValue<K, V>> listFromStore(KafkaStreams streams, String storeName) { final ReadOnlyKeyValueStore<K, V> store = streams.store( storeName, QueryableStoreTypes.keyValueStore()); final KeyValueIterator<K, V> all = store.all(); List<KeyValue<K, V>> result = new ArrayList<>(); while (all.hasNext()) { result.add(all.next()); } return result; }