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

fun.fengwk.convention4j.springboot.starter.eventbus.EventBusAutoConfiguration Maven / Gradle / Ivy

The newest version!
package fun.fengwk.convention4j.springboot.starter.eventbus;

import com.google.common.eventbus.EventBus;
import fun.fengwk.convention4j.common.util.NullSafe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.List;

/**
 * {@link EventBus}自动装配。
 *
 * @author fengwk
 */
@ConditionalOnClass(EventBus.class)
@Configuration
public class EventBusAutoConfiguration {

    private static final Logger log = LoggerFactory.getLogger(EventBusAutoConfiguration.class);

    @ConditionalOnMissingBean
    @Bean
    public DeadEventListener deadEventListener() {
        return new DefaultDeadEventListener();
    }

    @Bean
    public EventBus eventBus(ObjectProvider> eventListenersProvider, DeadEventListener deadEventListener) {
        List eventListeners = NullSafe.of(eventListenersProvider.getIfAvailable());
        EventBus eventBus = new EventBus();
        // 集成监听器
        for (EventListener eventListener : eventListeners) {
            eventBus.register(eventListener);
        }
        // 集成死信监听器
        eventBus.register(deadEventListener);
        log.info("{} autoconfiguration successfully, eventListeners: {}, deadEventListener: {}",
                EventBus.class.getSimpleName(), eventListeners, deadEventListener);
        return eventBus;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy