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

org.reactivecommons.async.impl.DynamicRegistryImp Maven / Gradle / Ivy

package org.reactivecommons.async.impl;

import com.rabbitmq.client.AMQP;
import lombok.RequiredArgsConstructor;
import org.reactivecommons.async.api.DynamicRegistry;
import org.reactivecommons.async.api.handlers.EventHandler;
import org.reactivecommons.async.api.handlers.registered.RegisteredEventListener;
import org.reactivecommons.async.impl.communications.TopologyCreator;
import org.reactivecommons.async.impl.config.IBrokerConfigProps;
import reactor.core.publisher.Mono;
import reactor.rabbitmq.BindingSpecification;

@RequiredArgsConstructor
public class DynamicRegistryImp implements DynamicRegistry {

    private final HandlerResolver resolver;
    private final TopologyCreator topologyCreator;
    private final IBrokerConfigProps props;

    @Override
    public  Mono listenEvent(String eventName, EventHandler fn, Class eventClass){
        resolver.addEventListener(new RegisteredEventListener<>(eventName, fn, eventClass));
        final Mono bind = topologyCreator.bind(BindingSpecification.binding(props.getDomainEventsExchangeName(), eventName, props.getEventsQueue()));
        return bind.then();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy