package org.unbrokendome.eventbus.components; import org.springframework.integration.dsl.IntegrationFlow; import org.springframework.integration.dsl.core.PollerSpec; import org.springframework.integration.store.ChannelMessageStore; import org.springframework.transaction.PlatformTransactionManager; import org.unbrokendome.eventbus.EventSubscriber; import java.util.Collections; public interface EventBusBuilder { EventBusBuilder setName(String name); EventBusBuilder setMessageStore(ChannelMessageStore messageStore); EventBusBuilder setTransactionManager(PlatformTransactionManager transactionManager); EventBusBuilder addSubscribers(Iterable<? extends EventSubscriber> subscribers); default EventBusBuilder addSubscriber(EventSubscriber subscriber) { return addSubscribers(Collections.singleton(subscriber)); } EventBusBuilder setEventPoller(PollerSpec eventPoller); IntegrationFlow build(); }