/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.communication.transport.jms.activemq.internal;
import javax.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory;
import de.rcenvironment.core.communication.channel.ServerContactPoint;
import de.rcenvironment.core.communication.model.NetworkContactPoint;
import de.rcenvironment.core.communication.transport.jms.common.JmsArtifactFactory;
import de.rcenvironment.core.communication.transport.jms.common.JmsBroker;
import de.rcenvironment.core.communication.transport.jms.common.RemoteInitiatedMessageChannelFactory;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* Factory for creating embedded ActiveMQ broker instances and related classes. Its purpose is to
* decouple the rest of the codebase from ActiveMQ specifics.
*
* @author Robert Mischke
*/
public class ActiveMQJmsFactory implements JmsArtifactFactory {
@Override
public JmsBroker createBroker(ServerContactPoint scp, RemoteInitiatedMessageChannelFactory remoteInitiatedConnectionFactory) {
return new ActiveMQBroker(scp, remoteInitiatedConnectionFactory);
}
@Override
public ConnectionFactory createConnectionFactory(NetworkContactPoint ncp) {
String url = StringUtils.format("tcp://%s:%d?keepAlive=true", ncp.getHost(), ncp.getPort());
ConnectionFactory connectionFactory = createConnectionFactory(url);
return connectionFactory;
}
private ConnectionFactory createConnectionFactory(final String url) {
return new ActiveMQConnectionFactory(url);
}
}