All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.otto.synapse.consumer.MessageConsumer Maven / Gradle / Ivy

Go to download

A library used at otto.de to implement Spring Boot based event-sourcing microservices.

The newest version!
package de.otto.synapse.consumer;

import de.otto.synapse.configuration.SynapseProperties;
import de.otto.synapse.eventsource.EventSource;
import de.otto.synapse.eventsource.EventSourceConsumerProcess;
import de.otto.synapse.message.Message;
import jakarta.annotation.Nonnull;

import java.util.function.Consumer;
import java.util.regex.Pattern;

import static java.util.regex.Pattern.compile;

/**
 * A consumer endpoint for {@link Message messages} with payload-type <T>.
 * 

* MesageConsumer *

*

* Multiple EventConsumers may listen at a single {@link EventSource}. A single EventConsumer * must be registered to multiple EventSources. *

*

* By default, Synapse is auto-configuring a {@link EventSourceConsumerProcess} that is * running a separate thread for every MessageConsumer. The thread is taking care for continuous * consumption of messages using the consumers, until the application is shutting down. *

*

* If you need to manually consume messages using MessageConsumers, auto-configuration of the * {@code EventSourceConsumerProcess} can be disabled by setting * {@link SynapseProperties.ConsumerProcess#setEnabled(boolean) synapse.consumer-process.enabled=false} *

*

* MessageConsumers are expected to be thread-safe. *

* * @param the type of the messages's payload */ public interface MessageConsumer extends Consumer> { static MessageConsumer of(final String keyPattern, final Class payloadType, final Consumer> consumer) { return new MessageConsumer() { private Pattern pattern = compile(keyPattern); @Override @Nonnull public Class payloadType() { return payloadType; } @Override @Nonnull public Pattern keyPattern() { return pattern; } @Override public void accept(Message tMessage) { consumer.accept(tMessage); } }; } /** * Returns the expected payload type of {@link Message events} consumed by this EventConsumer. * * @return payload type */ @Nonnull Class payloadType(); /** * Returns the pattern of {@link de.otto.synapse.message.Message#getKey() message keys} accepted by this consumer. * * @return Pattern */ @Nonnull Pattern keyPattern(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy