package cgl.iotcloud.transport.rabbitmq;
import cgl.iotcloud.core.msg.MessageContext;
import cgl.iotcloud.core.transport.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
public class RabbitMQTransport extends AbstractTransport {
private static final Logger LOG = LoggerFactory.getLogger(RabbitMQTransport.class);
public static final String EXCHANGE_NAME_PROPERTY = "exchange";
public static final String ROUTING_KEY_PROPERTY = "routingKey";
public static final String QUEUE_NAME_PROPERTY = "queueName";
@Override
public void configureTransport() {
}
@Override
public Manageable registerProducer(BrokerHost host, String prefix, Map channelConf, BlockingQueue<MessageContext> queue) {
LOG.info("Registering producer to host {}", host);
String exchangeName = (String) channelConf.get(EXCHANGE_NAME_PROPERTY);
String routingKey = (String) channelConf.get(ROUTING_KEY_PROPERTY);
String queueName = (String) channelConf.get(QUEUE_NAME_PROPERTY);
RabbitMQSender sender = new RabbitMQSender(queue, exchangeName, prefix + "." + routingKey, prefix + "." + queueName, host.getUrl());
if (executorService != null) {
sender.setExecutorService(executorService);
}
return sender;
}
@Override
public Manageable registerConsumer(BrokerHost host, String prefix, Map channelConf, BlockingQueue<MessageContext> queue) {
LOG.info("Registering consumer to host {}", host);
String exchangeName = (String) channelConf.get(EXCHANGE_NAME_PROPERTY);
String routingKey = (String) channelConf.get(ROUTING_KEY_PROPERTY);
String queueName = (String) channelConf.get(QUEUE_NAME_PROPERTY);
RabbitMQReceiver listener = new RabbitMQReceiver(queue, prefix + "." + queueName, host.getUrl());
if (executorService != null) {
listener.setExecutorService(executorService);
}
listener.setExchangeName(exchangeName);
listener.setRoutingKey(prefix + "." + routingKey);
return listener;
}
}