
com.github.libgraviton.workerbase.mq.WorkerQueueManager Maven / Gradle / Ivy
package com.github.libgraviton.workerbase.mq;
import com.github.libgraviton.workerbase.WorkerAbstract;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.Properties;
/**
* QueueManager
*
* @author List of contributors {@literal }
* @version $Id: $Id
* @see http://swisscom.ch
*/
public class WorkerQueueManager extends QueueManager {
private ConnectionFactory factory;
private WorkerAbstract worker;
private Integer prefetchCount;
public WorkerQueueManager(Properties properties) {
super(properties);
prefetchCount = Integer.parseInt(properties.getProperty("queue.prefetchCount"));
factory = getFactory(properties);
}
protected ConnectionFactory getFactory(Properties properties) {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(properties.getProperty("queue.host"));
factory.setPort(Integer.parseInt(properties.getProperty("queue.port")));
factory.setUsername(properties.getProperty("queue.username"));
factory.setPassword(properties.getProperty("queue.password"));
factory.setVirtualHost(properties.getProperty("queue.vhost"));
factory.setAutomaticRecoveryEnabled(true);
factory.setNetworkRecoveryInterval(retryAfterSeconds * 1000);
factory.setExceptionHandler(new QueueExceptionHandler());
return factory;
}
@Override
protected QueueConnector getQueueConnector() {
WorkerQueueConnector queueConnector = new WorkerQueueConnector();
queueConnector.setQueueName(getQueueName());
queueConnector.setFactory(factory);
queueConnector.setWorker(worker);
queueConnector.setRetryAfterSeconds(retryAfterSeconds);
queueConnector.setPrefetchCount(prefetchCount);
return queueConnector;
}
public void createChannel(Connection connection) throws IOException {
((WorkerQueueConnector) getQueueConnector()).createChannel(connection);
}
public void setWorker(WorkerAbstract worker) {
this.worker = worker;
}
public ConnectionFactory getFactory() {
return factory;
}
public WorkerAbstract getWorker() {
return worker;
}
public String getQueueName() {
return worker.getWorkerId();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy