Search in sources :

Example 11 with ActiveMQConnectionFactory

use of org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory in project activemq-artemis by apache.

the class ActiveMQResourceAdapter method getConnectionFactory.

public synchronized ActiveMQConnectionFactory getConnectionFactory(final ConnectionFactoryProperties overrideProperties) {
    ActiveMQConnectionFactory cf;
    boolean known = false;
    if (!knownConnectionFactories.keySet().contains(overrideProperties)) {
        cf = newConnectionFactory(overrideProperties);
        knownConnectionFactories.put(overrideProperties, new Pair<>(cf, new AtomicInteger(1)));
    } else {
        Pair<ActiveMQConnectionFactory, AtomicInteger> pair = knownConnectionFactories.get(overrideProperties);
        cf = pair.getA();
        pair.getB().incrementAndGet();
        known = true;
    }
    if (known && cf.getServerLocator().isClosed()) {
        knownConnectionFactories.remove(overrideProperties);
        cf = newConnectionFactory(overrideProperties);
        knownConnectionFactories.put(overrideProperties, new Pair<>(cf, new AtomicInteger(1)));
    }
    return cf;
}
Also used : ActiveMQConnectionFactory(org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory) AtomicInteger(java.util.concurrent.atomic.AtomicInteger)

Example 12 with ActiveMQConnectionFactory

use of org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory in project activemq-artemis by apache.

the class ActiveMQResourceAdapter method newConnectionFactory.

public ActiveMQConnectionFactory newConnectionFactory(ConnectionFactoryProperties overrideProperties) {
    ActiveMQConnectionFactory cf;
    List<String> connectorClassName = overrideProperties.getParsedConnectorClassNames() != null ? overrideProperties.getParsedConnectorClassNames() : raProperties.getParsedConnectorClassNames();
    Boolean ha = overrideProperties.isHA() != null ? overrideProperties.isHA() : getHA();
    if (ha == null) {
        ha = ActiveMQClient.DEFAULT_IS_HA;
    }
    BroadcastEndpointFactory endpointFactory = this.createBroadcastEndpointFactory(overrideProperties);
    if (endpointFactory != null) {
        Long refreshTimeout = overrideProperties.getDiscoveryRefreshTimeout() != null ? overrideProperties.getDiscoveryRefreshTimeout() : raProperties.getDiscoveryRefreshTimeout();
        if (refreshTimeout == null) {
            refreshTimeout = ActiveMQClient.DEFAULT_DISCOVERY_REFRESH_TIMEOUT;
        }
        Long initialTimeout = overrideProperties.getDiscoveryInitialWaitTimeout() != null ? overrideProperties.getDiscoveryInitialWaitTimeout() : raProperties.getDiscoveryInitialWaitTimeout();
        if (initialTimeout == null) {
            initialTimeout = ActiveMQClient.DEFAULT_DISCOVERY_INITIAL_WAIT_TIMEOUT;
        }
        DiscoveryGroupConfiguration groupConfiguration = new DiscoveryGroupConfiguration().setRefreshTimeout(refreshTimeout).setDiscoveryInitialWaitTimeout(initialTimeout).setBroadcastEndpointFactory(endpointFactory);
        if (ActiveMQRALogger.LOGGER.isDebugEnabled()) {
            ActiveMQRALogger.LOGGER.debug("Creating Connection Factory on the resource adapter for discovery=" + groupConfiguration + " with ha=" + ha);
        }
        if (ha) {
            cf = ActiveMQJMSClient.createConnectionFactoryWithHA(groupConfiguration, JMSFactoryType.XA_CF);
        } else {
            cf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(groupConfiguration, JMSFactoryType.XA_CF);
        }
    } else if (connectorClassName != null) {
        TransportConfiguration[] transportConfigurations = new TransportConfiguration[connectorClassName.size()];
        List<Map<String, Object>> connectionParams;
        if (overrideProperties.getParsedConnectorClassNames() != null) {
            connectionParams = overrideProperties.getParsedConnectionParameters();
        } else {
            connectionParams = raProperties.getParsedConnectionParameters();
        }
        for (int i = 0; i < connectorClassName.size(); i++) {
            TransportConfiguration tc;
            if (connectionParams == null || i >= connectionParams.size()) {
                tc = new TransportConfiguration(connectorClassName.get(i));
                ActiveMQRALogger.LOGGER.debug("No connector params provided using default");
            } else {
                tc = new TransportConfiguration(connectorClassName.get(i), connectionParams.get(i));
            }
            transportConfigurations[i] = tc;
        }
        if (ActiveMQRALogger.LOGGER.isDebugEnabled()) {
            ActiveMQRALogger.LOGGER.debug("Creating Connection Factory on the resource adapter for transport=" + Arrays.toString(transportConfigurations) + " with ha=" + ha);
        }
        if (ha) {
            cf = ActiveMQJMSClient.createConnectionFactoryWithHA(JMSFactoryType.XA_CF, transportConfigurations);
        } else {
            cf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.XA_CF, transportConfigurations);
        }
    } else {
        throw new IllegalArgumentException("must provide either TransportType or DiscoveryGroupAddress and DiscoveryGroupPort for ResourceAdapter Connection Factory");
    }
    setParams(cf, overrideProperties);
    return cf;
}
Also used : ActiveMQConnectionFactory(org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory) ArrayList(java.util.ArrayList) List(java.util.List) TransportConfiguration(org.apache.activemq.artemis.api.core.TransportConfiguration) DiscoveryGroupConfiguration(org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) JGroupsFileBroadcastEndpointFactory(org.apache.activemq.artemis.api.core.JGroupsFileBroadcastEndpointFactory) ChannelBroadcastEndpointFactory(org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) UDPBroadcastEndpointFactory(org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) BroadcastEndpointFactory(org.apache.activemq.artemis.api.core.BroadcastEndpointFactory)

Example 13 with ActiveMQConnectionFactory

use of org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory in project activemq-artemis by apache.

the class JMSServerManagerImpl method createConnectionFactory.

@Override
public synchronized void createConnectionFactory(final String name, final boolean ha, JMSFactoryType cfType, final List<String> connectorNames, final String clientID, final long clientFailureCheckPeriod, final long connectionTTL, final long callTimeout, final long callFailoverTimeout, final boolean cacheLargeMessagesClient, final int minLargeMessageSize, final boolean compressLargeMessage, final int consumerWindowSize, final int consumerMaxRate, final int confirmationWindowSize, final int producerWindowSize, final int producerMaxRate, final boolean blockOnAcknowledge, final boolean blockOnDurableSend, final boolean blockOnNonDurableSend, final boolean autoGroup, final boolean preAcknowledge, final String loadBalancingPolicyClassName, final int transactionBatchSize, final int dupsOKBatchSize, final boolean useGlobalPools, final int scheduledThreadPoolMaxSize, final int threadPoolMaxSize, final long retryInterval, final double retryIntervalMultiplier, final long maxRetryInterval, final int reconnectAttempts, final boolean failoverOnInitialConnection, final String groupId, String... registryBindings) throws Exception {
    checkInitialised();
    ActiveMQConnectionFactory cf = connectionFactories.get(name);
    if (cf == null) {
        ConnectionFactoryConfiguration configuration = new ConnectionFactoryConfigurationImpl().setName(name).setHA(ha).setConnectorNames(connectorNames).setClientID(clientID).setClientFailureCheckPeriod(clientFailureCheckPeriod).setConnectionTTL(connectionTTL).setFactoryType(cfType).setCallTimeout(callTimeout).setCallFailoverTimeout(callFailoverTimeout).setCacheLargeMessagesClient(cacheLargeMessagesClient).setMinLargeMessageSize(minLargeMessageSize).setConsumerWindowSize(consumerWindowSize).setConsumerMaxRate(consumerMaxRate).setConfirmationWindowSize(confirmationWindowSize).setProducerWindowSize(producerWindowSize).setProducerMaxRate(producerMaxRate).setBlockOnAcknowledge(blockOnAcknowledge).setBlockOnDurableSend(blockOnDurableSend).setBlockOnNonDurableSend(blockOnNonDurableSend).setAutoGroup(autoGroup).setPreAcknowledge(preAcknowledge).setLoadBalancingPolicyClassName(loadBalancingPolicyClassName).setTransactionBatchSize(transactionBatchSize).setDupsOKBatchSize(dupsOKBatchSize).setUseGlobalPools(useGlobalPools).setScheduledThreadPoolMaxSize(scheduledThreadPoolMaxSize).setThreadPoolMaxSize(threadPoolMaxSize).setRetryInterval(retryInterval).setRetryIntervalMultiplier(retryIntervalMultiplier).setMaxRetryInterval(maxRetryInterval).setReconnectAttempts(reconnectAttempts).setFailoverOnInitialConnection(failoverOnInitialConnection).setGroupID(groupId);
        createConnectionFactory(true, configuration, registryBindings);
    }
}
Also used : ActiveMQConnectionFactory(org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory) ConnectionFactoryConfigurationImpl(org.apache.activemq.artemis.jms.server.config.impl.ConnectionFactoryConfigurationImpl) ConnectionFactoryConfiguration(org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration)

Example 14 with ActiveMQConnectionFactory

use of org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory in project activemq-artemis by apache.

the class JMSServerManagerImpl method recreateCF.

@Override
public synchronized ActiveMQConnectionFactory recreateCF(String name, ConnectionFactoryConfiguration cf) throws Exception {
    List<String> bindings = connectionFactoryBindings.get(name);
    if (bindings == null) {
        throw ActiveMQJMSServerBundle.BUNDLE.cfDoesntExist(name);
    }
    String[] usedBindings = bindings.toArray(new String[bindings.size()]);
    ActiveMQConnectionFactory realCF = internalCreateCFPOJO(cf);
    if (cf.isPersisted()) {
        storage.storeConnectionFactory(new PersistedConnectionFactory(cf));
        storage.addBindings(PersistedType.ConnectionFactory, cf.getName(), usedBindings);
    }
    for (String bindingsElement : usedBindings) {
        this.bindToBindings(bindingsElement, realCF);
    }
    return realCF;
}
Also used : ActiveMQConnectionFactory(org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory) PersistedConnectionFactory(org.apache.activemq.artemis.jms.persistence.config.PersistedConnectionFactory) SimpleString(org.apache.activemq.artemis.api.core.SimpleString)

Example 15 with ActiveMQConnectionFactory

use of org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory in project activemq-artemis by apache.

the class ConnectionFactoryURITest method testWeirdEncodingsOnIP.

@Test
public void testWeirdEncodingsOnIP() throws Exception {
    // This is to make things worse. Having & and = on the property shouldn't break it
    final String BROKEN_PROPERTY = "e80::56ee:75ff:fe53:e6a7%25enp0s25&host=[fe80::56ee:75ff:fe53:e6a7]#";
    Map<String, Object> params = new HashMap<>();
    params.put(TransportConstants.LOCAL_ADDRESS_PROP_NAME, BROKEN_PROPERTY);
    TransportConfiguration configuration = new TransportConfiguration(NettyConnector.class.getName(), params);
    ActiveMQConnectionFactory factory = ActiveMQJMSClient.createConnectionFactoryWithHA(JMSFactoryType.CF, configuration);
    URI uri = factory.toURI();
    ActiveMQConnectionFactory newFactory = ActiveMQJMSClient.createConnectionFactory(uri.toString(), "somefactory");
    TransportConfiguration[] initialConnectors = ((ServerLocatorImpl) newFactory.getServerLocator()).getInitialConnectors();
    Assert.assertEquals(1, initialConnectors.length);
    Assert.assertEquals(BROKEN_PROPERTY, initialConnectors[0].getParams().get(TransportConstants.LOCAL_ADDRESS_PROP_NAME).toString());
}
Also used : ActiveMQConnectionFactory(org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory) HashMap(java.util.HashMap) TransportConfiguration(org.apache.activemq.artemis.api.core.TransportConfiguration) ServerLocatorImpl(org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl) NettyConnector(org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector) URI(java.net.URI) Test(org.junit.Test)

Aggregations

ActiveMQConnectionFactory (org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory)221 Test (org.junit.Test)141 Connection (javax.jms.Connection)84 Session (javax.jms.Session)84 MessageProducer (javax.jms.MessageProducer)63 MessageConsumer (javax.jms.MessageConsumer)60 TextMessage (javax.jms.TextMessage)49 Queue (javax.jms.Queue)48 ConnectionFactory (javax.jms.ConnectionFactory)35 TransportConfiguration (org.apache.activemq.artemis.api.core.TransportConfiguration)27 SimpleString (org.apache.activemq.artemis.api.core.SimpleString)26 ClientSession (org.apache.activemq.artemis.api.core.client.ClientSession)24 ActiveMQResourceAdapter (org.apache.activemq.artemis.ra.ActiveMQResourceAdapter)24 URI (java.net.URI)22 JMSException (javax.jms.JMSException)20 Message (javax.jms.Message)19 DiscoveryGroupConfiguration (org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration)19 InitialContext (javax.naming.InitialContext)16 Context (javax.naming.Context)15 Hashtable (java.util.Hashtable)14