@Override public CompletableFuture<?> subscribe(String subscriberId, Map<String, Set<String>> aggregatesAndEvents, SubscriberOptions subscriberOptions, Function<SerializedEvent, CompletableFuture<?>> handler) { List<String> topics = aggregatesAndEvents.keySet() .stream() .map(AggregateTopicMapping::aggregateTypeToTopic) .collect(toList()); EventuateKafkaConsumer consumer = new EventuateKafkaConsumer(subscriberId, (record, callback) -> { SerializedEvent se = toSerializedEvent(record); if (aggregatesAndEvents.get(se.getEntityType()).contains(se.getEventType())) { handler.apply(se).whenComplete((result, t) -> { callback.accept(null, t); }); } else { callback.accept(null, null); } }, topics, eventuateLocalAggregateStoreConfiguration.getBootstrapServers(), eventuateKafkaConsumerConfigurationProperties); addConsumer(consumer); consumer.start(); return CompletableFuture.completedFuture(null); }
@Override public CompletableFuture<?> subscribe(String subscriberId, Map<String, Set<String>> aggregatesAndEvents, SubscriberOptions subscriberOptions, Function<SerializedEvent, CompletableFuture<?>> handler) { List<String> topics = aggregatesAndEvents.keySet() .stream() .map(AggregateTopicMapping::aggregateTypeToTopic) .collect(toList()); EventuateKafkaConsumer consumer = new EventuateKafkaConsumer(subscriberId, (record, callback) -> { SerializedEvent se = toSerializedEvent(record); if (aggregatesAndEvents.get(se.getEntityType()).contains(se.getEventType())) { handler.apply(se).whenComplete((result, t) -> { callback.accept(null, t); }); } else { callback.accept(null, null); } }, topics, eventuateLocalAggregateStoreConfiguration.getBootstrapServers(), eventuateKafkaConsumerConfigurationProperties); addConsumer(consumer); consumer.start(); return CompletableFuture.completedFuture(null); }
@Override public Optional<DispatchedEvent<Event>> toDispatchedEvent(SerializedEvent se) { String eventType = se.getEventType(); Class<Event> eventClass = toEventClass(eventType); Event event = JSonMapper.fromJson(se.getEventData(), eventClass); return Optional.of(new DispatchedEvent<>(se.getEntityId(), se.getId(), event, se.getSwimLane(), se.getOffset(), se.getEventContext(), se.getMetadata() == null ? Optional.empty() : se.getMetadata().map(md -> JSonMapper.fromJson(md, Map.class)))); }
@Override public Optional<DispatchedEvent<Event>> toDispatchedEvent(SerializedEvent se) { String eventType = se.getEventType(); Class<Event> eventClass = toEventClass(eventType); Event event = JSonMapper.fromJson(se.getEventData(), eventClass); return Optional.of(new DispatchedEvent<>(se.getEntityId(), se.getId(), event, se.getSwimLane(), se.getOffset(), se.getEventContext(), se.getMetadata() == null ? Optional.empty() : se.getMetadata().map(md -> JSonMapper.fromJson(md, Map.class)))); }