@Override public void appendEvents(List<? extends EventMessage<?>> events) { synchronized (this.events) { GlobalSequenceTrackingToken trackingToken = nextTrackingToken(); this.events.putAll(IntStream.range(0, events.size()).mapToObj( i -> asTrackedEventMessage((EventMessage<?>) events.get(i), trackingToken.offsetBy(i))).collect( Collectors.toMap(TrackedEventMessage::trackingToken, Function.identity()))); } }
@Override public Stream<? extends TrackedEventMessage<?>> readEvents(TrackingToken trackingToken, boolean mayBlock) { Stream<? extends TrackedEventData<?>> input = readEventData(trackingToken, mayBlock); return upcastAndDeserializeTrackedEvents(input, eventSerializer, upcasterChain); }
/** * Returns a Jpa event entity for given {@code eventMessage}. Use the given {@code serializer} to serialize the * payload and metadata of the event. * * @param eventMessage the event message to store * @param serializer the serializer to serialize the payload and metadata * @return the Jpa entity to be inserted */ protected Object createEventEntity(EventMessage<?> eventMessage, Serializer serializer) { return new DomainEventEntry(asDomainEventMessage(eventMessage), serializer); }
EventUpcaster upcasterChain) { Stream<IntermediateEventRepresentation> upcastResult = upcastAndDeserialize(eventEntryStream, upcasterChain, entry -> new InitialEventRepresentation(entry, serializer)); return upcastResult.map(ir -> {
EventUpcaster upcasterChain) { Stream<IntermediateEventRepresentation> upcastResult = upcastAndDeserialize(eventEntryStream, upcasterChain, entry -> new InitialEventRepresentation(entry, serializer)); return upcastResult.map(ir -> {
TrackingToken trackingToken = new GlobalSequenceTrackingToken(0); List<TrackedEventMessage<?>> events = createEvents(2).stream().map(event -> asTrackedEventMessage(event, trackingToken)).collect(toList()); when(eventBus.openStream(null)).thenReturn(trackingEventStreamOf(events.iterator())); testSubject = TrackingEventProcessor.builder()
/** * Initializes an Event Buffer, passing messages through given {@code upcasterChain} and deserializing events using * given {@code serializer}. * * @param upcasterChain The upcasterChain to translate serialized representations before deserializing * @param serializer The serializer capable of deserializing incoming messages */ public EventBuffer(EventUpcaster upcasterChain, Serializer serializer) { this.events = new LinkedBlockingQueue<>(); eventStream = EventUtils.upcastAndDeserializeTrackedEvents(StreamSupport.stream(new SimpleSpliterator<>(this::poll), false), new GrpcMetaDataAwareSerializer(serializer), getOrDefault(upcasterChain, NoOpEventUpcaster.INSTANCE) ) .iterator(); }
DomainEventMessage<?> event = asDomainEventMessage(eventMessage); SerializedObject<?> payload = event.serializePayload(serializer, dataType); SerializedObject<?> metaData = event.serializeMetaData(serializer, dataType);
@Override public void appendEvents(List<? extends EventMessage<?>> events) { synchronized (this.events) { GlobalSequenceTrackingToken trackingToken = nextTrackingToken(); this.events.putAll(IntStream.range(0, events.size()).mapToObj( i -> asTrackedEventMessage((EventMessage<?>) events.get(i), trackingToken.offsetBy(i))).collect( Collectors.toMap(TrackedEventMessage::trackingToken, Function.identity()))); } }
@Override public Stream<? extends TrackedEventMessage<?>> readEvents(TrackingToken trackingToken, boolean mayBlock) { Stream<? extends TrackedEventData<?>> input = readEventData(trackingToken, mayBlock); return upcastAndDeserializeTrackedEvents(input, eventSerializer, upcasterChain); }
/** * Returns a Jpa event entity for given {@code eventMessage}. Use the given {@code serializer} to serialize the * payload and metadata of the event. * * @param eventMessage the event message to store * @param serializer the serializer to serialize the payload and metadata * @return the Jpa entity to be inserted */ protected Object createEventEntity(EventMessage<?> eventMessage, Serializer serializer) { return new DomainEventEntry(asDomainEventMessage(eventMessage), serializer); }
public static KafkaEventMessage from(EventMessage<?> eventMessage, ConsumerRecord<?, ?> record, KafkaTrackingToken token) { return new KafkaEventMessage( asTrackedEventMessage(eventMessage, token), record.partition(), record.offset(), record.timestamp() ); }
/** * Initializes an Event Buffer, passing messages through given {@code upcasterChain} and deserializing events using * given {@code serializer}. * * @param upcasterChain The upcasterChain to translate serialized representations before deserializing * @param serializer The serializer capable of deserializing incoming messages */ public EventBuffer(EventUpcaster upcasterChain, Serializer serializer) { this.events = new LinkedBlockingQueue<>(); eventStream = EventUtils.upcastAndDeserializeTrackedEvents(StreamSupport.stream(new SimpleSpliterator<>(this::poll), false), new GrpcMetaDataAwareSerializer(serializer), getOrDefault(upcasterChain, NoOpEventUpcaster.INSTANCE) ) .iterator(); }
DomainEventMessage<?> event = asDomainEventMessage(eventMessage); SerializedObject<?> payload = event.serializePayload(serializer, dataType); SerializedObject<?> metaData = event.serializeMetaData(serializer, dataType);