77 lines
2.6 KiB
Java
77 lines
2.6 KiB
Java
package org.gcube.dataanalysis.executor.messagequeue;
|
|
|
|
import java.util.Hashtable;
|
|
import java.util.Properties;
|
|
import java.util.UUID;
|
|
|
|
import javax.jms.Connection;
|
|
import javax.jms.ConnectionFactory;
|
|
import javax.jms.Destination;
|
|
import javax.jms.JMSException;
|
|
import javax.jms.Session;
|
|
import javax.management.ObjectName;
|
|
import javax.management.remote.JMXConnector;
|
|
import javax.management.remote.JMXConnectorFactory;
|
|
import javax.management.remote.JMXServiceURL;
|
|
import javax.naming.Context;
|
|
import javax.naming.InitialContext;
|
|
|
|
import org.apache.activemq.ActiveMQConnectionFactory;
|
|
import org.apache.activemq.broker.BrokerService;
|
|
import org.apache.activemq.broker.jmx.QueueViewMBean;
|
|
|
|
public class QueueManager {
|
|
|
|
public ActiveMQConnectionFactory connectionFactory;
|
|
public Connection connection;
|
|
public Session session;
|
|
public Destination destination;
|
|
boolean transacted = false;
|
|
public String mqurl;
|
|
private String identifier;
|
|
|
|
public void createAndConnect(String user,String password, String mqurl, String queueName) throws JMSException {
|
|
this.mqurl=mqurl;
|
|
connect(user,password,mqurl);
|
|
session = connection.createSession(transacted, Session.CLIENT_ACKNOWLEDGE);
|
|
this.identifier = ""+UUID.randomUUID();
|
|
/*
|
|
Hashtable properties = new Hashtable();
|
|
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory");
|
|
properties.put(Context.PROVIDER_URL, mqurl);
|
|
InitialContext context = new InitialContext(properties);
|
|
ConnectionFactory factory = (ConnectionFactory) context.lookup("ConnectionFactory");
|
|
|
|
destination = (Destination) context.lookup(queueName);
|
|
*/
|
|
// destination = session.createQueue(queueName+"?consumer.prefetchSize=3");
|
|
destination = session.createQueue(queueName+"?wireFormat.maxInactivityDurationInitalDelay=3600000&requestTimeout=240000&wireFormat.maxInactivityDuration=3600000");
|
|
}
|
|
|
|
public void destroy(){
|
|
|
|
}
|
|
|
|
private void connect(String user,String password, String mqurl) throws JMSException{
|
|
connectionFactory = new ActiveMQConnectionFactory(user, password, mqurl);
|
|
connectionFactory.getPrefetchPolicy().setQueuePrefetch(1);
|
|
|
|
// Properties p = new Properties();
|
|
// p.put("persistent", "false");
|
|
// p.put("consumer.prefetchSize", "3");
|
|
// p.put("ms.prefetchPolicy.all", "3");
|
|
// p.put("cms.PrefetchPolicy.queuePrefetch", "3");
|
|
|
|
// connectionFactory.setProperties(p);
|
|
connection = connectionFactory.createConnection();
|
|
connection.setClientID(identifier);
|
|
connection.start();
|
|
}
|
|
|
|
public void closeSession() throws Exception{
|
|
// session.unsubscribe(identifier);
|
|
|
|
session.close();
|
|
|
|
}
|
|
} |