package io.muoncore.discovery.amqp; import io.muoncore.Discovery; import io.muoncore.codec.Codecs; import io.muoncore.codec.json.JsonOnlyCodecs; import io.muoncore.config.AutoConfiguration; import io.muoncore.discovery.DiscoveryFactory; import io.muoncore.extension.amqp.AmqpConnection; import io.muoncore.extension.amqp.QueueListenerFactory; import io.muoncore.extension.amqp.discovery.AmqpDiscovery; import io.muoncore.transport.ServiceCache; import io.muoncore.extension.amqp.rabbitmq09.RabbitMq09ClientAmqpConnection; import io.muoncore.extension.amqp.rabbitmq09.RabbitMq09QueueListenerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Properties; public class AmqpDiscoveryFactory implements DiscoveryFactory { public static final String DISCOVERY_URL_PROPERTY_NAME = "amqp.discovery.url"; private static Logger LOG = LoggerFactory.getLogger(AmqpDiscoveryFactory.class.getName()); @Override public Discovery build(Properties properties) { AmqpDiscovery discovery = null; try { final String discoveryUrl = properties.getProperty(DISCOVERY_URL_PROPERTY_NAME); if (discoveryUrl != null) { AmqpConnection connection = new RabbitMq09ClientAmqpConnection(discoveryUrl); QueueListenerFactory queueFactory = new RabbitMq09QueueListenerFactory(connection.getChannel()); Codecs codecs = new JsonOnlyCodecs(); discovery = new AmqpDiscovery(queueFactory, connection, new ServiceCache(), codecs); discovery.start(); } } catch (Exception e) { LOG.info("Error creating AMQP discovery", e); } return discovery; } @Override public void setAutoConfiguration(AutoConfiguration autoConfiguration) { } }