package io.muoncore.extension.amqp;
import io.muoncore.Discovery;
import io.muoncore.channel.support.Scheduler;
import io.muoncore.codec.Codecs;
import io.muoncore.transport.client.RingBufferLocalDispatcher;
import reactor.core.Dispatcher;
public class DefaultAmqpChannelFactory implements AmqpChannelFactory {
private String localServiceName;
private QueueListenerFactory listenerFactory;
private AmqpConnection connection;
private Dispatcher dispatcher = new RingBufferLocalDispatcher("amqp-channel", 32768);
private Codecs codecs;
private Discovery discovery;
private Scheduler scheduler;
public DefaultAmqpChannelFactory(String localServiceName, QueueListenerFactory listenerFactory, AmqpConnection connection) {
this.localServiceName = localServiceName;
this.listenerFactory = listenerFactory;
this.connection = connection;
}
@Override
public AmqpChannel createChannel() {
return new DefaultAmqpChannel(connection, listenerFactory, localServiceName, dispatcher, codecs, discovery, scheduler);
}
@Override
public void initialiseEnvironment(Codecs codecs, Discovery discovery, Scheduler scheduler) {
this.codecs = codecs;
this.discovery = discovery;
this.scheduler = scheduler;
}
}