Search in sources :

Example 16 with ConnectionFactoryConfiguration

use of org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration in project activemq-artemis by apache.

the class OpenWireTestBase method createCF.

protected void createCF(final List<TransportConfiguration> connectorConfigs, final String... jndiBindings) throws Exception {
    final int retryInterval = 1000;
    final double retryIntervalMultiplier = 1.0;
    final int reconnectAttempts = -1;
    final int callTimeout = 30000;
    List<String> connectorNames = registerConnectors(server, connectorConfigs);
    String cfName = name.getMethodName();
    if (cfName == null) {
        cfName = "cfOpenWire";
    }
    ConnectionFactoryConfiguration configuration = new ConnectionFactoryConfigurationImpl().setName(cfName).setConnectorNames(connectorNames).setRetryInterval(retryInterval).setRetryIntervalMultiplier(retryIntervalMultiplier).setCallTimeout(callTimeout).setReconnectAttempts(reconnectAttempts);
    jmsServer.createConnectionFactory(false, configuration, jndiBindings);
}
Also used : ConnectionFactoryConfigurationImpl(org.apache.activemq.artemis.jms.server.config.impl.ConnectionFactoryConfigurationImpl) SimpleString(org.apache.activemq.artemis.api.core.SimpleString) ConnectionFactoryConfiguration(org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration)

Example 17 with ConnectionFactoryConfiguration

use of org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration in project activemq-artemis by apache.

the class ManualReconnectionToSingleServerTest method setUp.

// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
@Override
@Before
public void setUp() throws Exception {
    super.setUp();
    context = new InVMNamingContext();
    server = createServer(false, createDefaultNettyConfig());
    JMSConfiguration configuration = new JMSConfigurationImpl();
    serverManager = new JMSServerManagerImpl(server, configuration);
    serverManager.setRegistry(new JndiBindingRegistry(context));
    configuration.getQueueConfigurations().add(new JMSQueueConfigurationImpl().setName(QUEUE_NAME).setBindings(QUEUE_NAME));
    ArrayList<TransportConfiguration> configs = new ArrayList<>();
    configs.add(new TransportConfiguration(NETTY_CONNECTOR_FACTORY));
    ConnectionFactoryConfiguration cfConfig = new ConnectionFactoryConfigurationImpl().setName("cf").setConnectorNames(registerConnectors(server, configs)).setBindings("/cf").setRetryInterval(1000).setReconnectAttempts(-1);
    configuration.getConnectionFactoryConfigurations().add(cfConfig);
    serverManager.start();
    listener = new Listener();
    exceptionLatch = new CountDownLatch(1);
    reconnectionLatch = new CountDownLatch(1);
    allMessagesReceived = new CountDownLatch(1);
}
Also used : JMSConfiguration(org.apache.activemq.artemis.jms.server.config.JMSConfiguration) MessageListener(javax.jms.MessageListener) ExceptionListener(javax.jms.ExceptionListener) ArrayList(java.util.ArrayList) JndiBindingRegistry(org.apache.activemq.artemis.core.registry.JndiBindingRegistry) TransportConfiguration(org.apache.activemq.artemis.api.core.TransportConfiguration) CountDownLatch(java.util.concurrent.CountDownLatch) JMSServerManagerImpl(org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl) ConnectionFactoryConfigurationImpl(org.apache.activemq.artemis.jms.server.config.impl.ConnectionFactoryConfigurationImpl) JMSConfigurationImpl(org.apache.activemq.artemis.jms.server.config.impl.JMSConfigurationImpl) JMSQueueConfigurationImpl(org.apache.activemq.artemis.jms.server.config.impl.JMSQueueConfigurationImpl) ConnectionFactoryConfiguration(org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration) InVMNamingContext(org.apache.activemq.artemis.tests.unit.util.InVMNamingContext) Before(org.junit.Before)

Example 18 with ConnectionFactoryConfiguration

use of org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration in project wildfly by wildfly.

the class ConnectionFactoryAdd method createConfiguration.

static ConnectionFactoryConfiguration createConfiguration(final OperationContext context, final String name, final ModelNode model) throws OperationFailedException {
    final List<String> entries = Common.ENTRIES.unwrap(context, model);
    final ConnectionFactoryConfiguration config = new ConnectionFactoryConfigurationImpl().setName(name).setHA(false).setBindings(entries.toArray(new String[entries.size()]));
    config.setHA(HA.resolveModelAttribute(context, model).asBoolean());
    config.setAutoGroup(Common.AUTO_GROUP.resolveModelAttribute(context, model).asBoolean());
    config.setBlockOnAcknowledge(Common.BLOCK_ON_ACKNOWLEDGE.resolveModelAttribute(context, model).asBoolean());
    config.setBlockOnDurableSend(Common.BLOCK_ON_DURABLE_SEND.resolveModelAttribute(context, model).asBoolean());
    config.setBlockOnNonDurableSend(Common.BLOCK_ON_NON_DURABLE_SEND.resolveModelAttribute(context, model).asBoolean());
    config.setCacheLargeMessagesClient(Common.CACHE_LARGE_MESSAGE_CLIENT.resolveModelAttribute(context, model).asBoolean());
    config.setCallTimeout(CALL_TIMEOUT.resolveModelAttribute(context, model).asLong());
    config.setClientFailureCheckPeriod(Common.CLIENT_FAILURE_CHECK_PERIOD.resolveModelAttribute(context, model).asInt());
    config.setCallFailoverTimeout(CALL_FAILOVER_TIMEOUT.resolveModelAttribute(context, model).asLong());
    final ModelNode clientId = CLIENT_ID.resolveModelAttribute(context, model);
    if (clientId.isDefined()) {
        config.setClientID(clientId.asString());
    }
    config.setCompressLargeMessages(Common.COMPRESS_LARGE_MESSAGES.resolveModelAttribute(context, model).asBoolean());
    config.setConfirmationWindowSize(Common.CONFIRMATION_WINDOW_SIZE.resolveModelAttribute(context, model).asInt());
    config.setConnectionTTL(Common.CONNECTION_TTL.resolveModelAttribute(context, model).asLong());
    List<String> connectorNames = Common.CONNECTORS.unwrap(context, model);
    config.setConnectorNames(connectorNames);
    config.setConsumerMaxRate(Common.CONSUMER_MAX_RATE.resolveModelAttribute(context, model).asInt());
    config.setConsumerWindowSize(Common.CONSUMER_WINDOW_SIZE.resolveModelAttribute(context, model).asInt());
    final ModelNode discoveryGroupName = Common.DISCOVERY_GROUP.resolveModelAttribute(context, model);
    if (discoveryGroupName.isDefined()) {
        config.setDiscoveryGroupName(discoveryGroupName.asString());
    }
    config.setDupsOKBatchSize(Common.DUPS_OK_BATCH_SIZE.resolveModelAttribute(context, model).asInt());
    config.setFailoverOnInitialConnection(Common.FAILOVER_ON_INITIAL_CONNECTION.resolveModelAttribute(context, model).asBoolean());
    final ModelNode groupId = Common.GROUP_ID.resolveModelAttribute(context, model);
    if (groupId.isDefined()) {
        config.setGroupID(groupId.asString());
    }
    final ModelNode lbcn = Common.CONNECTION_LOAD_BALANCING_CLASS_NAME.resolveModelAttribute(context, model);
    if (lbcn.isDefined()) {
        config.setLoadBalancingPolicyClassName(lbcn.asString());
    }
    config.setMaxRetryInterval(Common.MAX_RETRY_INTERVAL.resolveModelAttribute(context, model).asLong());
    config.setMinLargeMessageSize(Common.MIN_LARGE_MESSAGE_SIZE.resolveModelAttribute(context, model).asInt());
    config.setPreAcknowledge(Common.PRE_ACKNOWLEDGE.resolveModelAttribute(context, model).asBoolean());
    config.setProducerMaxRate(Common.PRODUCER_MAX_RATE.resolveModelAttribute(context, model).asInt());
    config.setProducerWindowSize(Common.PRODUCER_WINDOW_SIZE.resolveModelAttribute(context, model).asInt());
    config.setReconnectAttempts(Common.RECONNECT_ATTEMPTS.resolveModelAttribute(context, model).asInt());
    config.setRetryInterval(Common.RETRY_INTERVAL.resolveModelAttribute(context, model).asLong());
    config.setRetryIntervalMultiplier(Common.RETRY_INTERVAL_MULTIPLIER.resolveModelAttribute(context, model).asDouble());
    config.setScheduledThreadPoolMaxSize(Common.SCHEDULED_THREAD_POOL_MAX_SIZE.resolveModelAttribute(context, model).asInt());
    config.setThreadPoolMaxSize(Common.THREAD_POOL_MAX_SIZE.resolveModelAttribute(context, model).asInt());
    config.setTransactionBatchSize(Common.TRANSACTION_BATCH_SIZE.resolveModelAttribute(context, model).asInt());
    config.setUseGlobalPools(Common.USE_GLOBAL_POOLS.resolveModelAttribute(context, model).asBoolean());
    config.setLoadBalancingPolicyClassName(Common.CONNECTION_LOAD_BALANCING_CLASS_NAME.resolveModelAttribute(context, model).asString());
    final ModelNode clientProtocolManagerFactory = Common.PROTOCOL_MANAGER_FACTORY.resolveModelAttribute(context, model);
    if (clientProtocolManagerFactory.isDefined()) {
        config.setProtocolManagerFactoryStr(clientProtocolManagerFactory.asString());
    }
    List<String> deserializationBlackList = Common.DESERIALIZATION_BLACKLIST.unwrap(context, model);
    if (!deserializationBlackList.isEmpty()) {
        config.setDeserializationBlackList(String.join(",", deserializationBlackList));
    }
    List<String> deserializationWhiteList = Common.DESERIALIZATION_WHITELIST.unwrap(context, model);
    if (!deserializationWhiteList.isEmpty()) {
        config.setDeserializationWhiteList(String.join(",", deserializationWhiteList));
    }
    JMSFactoryType jmsFactoryType = ConnectionFactoryType.valueOf(ConnectionFactoryAttributes.Regular.FACTORY_TYPE.resolveModelAttribute(context, model).asString()).getType();
    config.setFactoryType(jmsFactoryType);
    config.setInitialMessagePacketSize(ConnectionFactoryAttributes.Common.INITIAL_MESSAGE_PACKET_SIZE.resolveModelAttribute(context, model).asInt());
    config.setEnableSharedClientID(true);
    config.setEnable1xPrefixes(true);
    config.setUseTopologyForLoadBalancing(ConnectionFactoryAttributes.Common.USE_TOPOLOGY.resolveModelAttribute(context, model).asBoolean());
    return config;
}
Also used : JMSFactoryType(org.apache.activemq.artemis.api.jms.JMSFactoryType) ConnectionFactoryConfigurationImpl(org.apache.activemq.artemis.jms.server.config.impl.ConnectionFactoryConfigurationImpl) ModelNode(org.jboss.dmr.ModelNode) ConnectionFactoryConfiguration(org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration)

Example 19 with ConnectionFactoryConfiguration

use of org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration in project wildfly by wildfly.

the class ConnectionFactoryAdd method performRuntime.

@Override
protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException {
    final String name = context.getCurrentAddressValue();
    final ServiceName activeMQServiceName = MessagingServices.getActiveMQServiceName(context.getCurrentAddress());
    final ConnectionFactoryConfiguration configuration = createConfiguration(context, name, model);
    final ConnectionFactoryService service = new ConnectionFactoryService(configuration);
    final ServiceName aliasServiceName = JMSServices.getConnectionFactoryBaseServiceName(activeMQServiceName).append(name);
    final ServiceName serviceName = ConnectionFactoryDefinition.CAPABILITY.getCapabilityServiceName(context.getCurrentAddress());
    ServiceBuilder<?> serviceBuilder = context.getServiceTarget().addService(serviceName, service).addAliases(aliasServiceName);
    serviceBuilder.requires(ActiveMQActivationService.getServiceName(activeMQServiceName));
    serviceBuilder.addDependency(JMSServices.getJmsManagerBaseServiceName(activeMQServiceName), JMSServerManager.class, service.getJmsServer());
    serviceBuilder.setInitialMode(Mode.PASSIVE);
    org.jboss.as.server.Services.addServerExecutorDependency(serviceBuilder, service.getExecutorInjector());
    serviceBuilder.install();
}
Also used : ServiceName(org.jboss.msc.service.ServiceName) ConnectionFactoryConfiguration(org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration)

Example 20 with ConnectionFactoryConfiguration

use of org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration in project wildfly by wildfly.

the class ExternalConnectionFactoryAdd method performRuntime.

@Override
protected void performRuntime(OperationContext context, ModelNode operation, ModelNode model) throws OperationFailedException {
    final String name = context.getCurrentAddressValue();
    final ServiceName serviceName = ExternalConnectionFactoryDefinition.CAPABILITY.getCapabilityServiceName(context.getCurrentAddress());
    boolean ha = HA.resolveModelAttribute(context, model).asBoolean();
    boolean enable1Prefixes = ENABLE_AMQ1_PREFIX.resolveModelAttribute(context, model).asBoolean();
    final ModelNode discoveryGroupName = Common.DISCOVERY_GROUP.resolveModelAttribute(context, model);
    final ConnectionFactoryConfiguration config = ConnectionFactoryAdd.createConfiguration(context, name, model);
    JMSFactoryType jmsFactoryType = ConnectionFactoryType.valueOf(ConnectionFactoryAttributes.Regular.FACTORY_TYPE.resolveModelAttribute(context, model).asString()).getType();
    List<String> connectorNames = Common.CONNECTORS.unwrap(context, model);
    ServiceBuilder<?> builder = context.getServiceTarget().addService(serviceName).addAliases(JMSServices.getConnectionFactoryBaseServiceName(MessagingServices.getActiveMQServiceName()).append(name));
    ExternalConnectionFactoryService service;
    if (discoveryGroupName.isDefined()) {
        // mapping between the {discovery}-groups and the cluster names they use
        Map<String, String> clusterNames = new HashMap<>();
        Map<String, Supplier<SocketBinding>> groupBindings = new HashMap<>();
        // mapping between the {discovery}-groups and the command dispatcher factory they use
        Map<String, Supplier<BroadcastCommandDispatcherFactory>> commandDispatcherFactories = new HashMap<>();
        final String dgname = discoveryGroupName.asString();
        final String key = "discovery" + dgname;
        ModelNode discoveryGroupModel;
        try {
            discoveryGroupModel = context.readResourceFromRoot(context.getCurrentAddress().getParent().append(JGROUPS_DISCOVERY_GROUP, dgname)).getModel();
        } catch (Resource.NoSuchResourceException ex) {
            discoveryGroupModel = new ModelNode();
        }
        if (discoveryGroupModel.hasDefined(JGROUPS_CLUSTER.getName())) {
            ModelNode channel = JGroupsDiscoveryGroupDefinition.JGROUPS_CHANNEL.resolveModelAttribute(context, discoveryGroupModel);
            ServiceName commandDispatcherFactoryServiceName = MessagingServices.getBroadcastCommandDispatcherFactoryServiceName(channel.asStringOrNull());
            Supplier<BroadcastCommandDispatcherFactory> commandDispatcherFactorySupplier = builder.requires(commandDispatcherFactoryServiceName);
            commandDispatcherFactories.put(key, commandDispatcherFactorySupplier);
            String clusterName = JGROUPS_CLUSTER.resolveModelAttribute(context, discoveryGroupModel).asString();
            clusterNames.put(key, clusterName);
        } else {
            final ServiceName groupBinding = GroupBindingService.getDiscoveryBaseServiceName(JBOSS_MESSAGING_ACTIVEMQ).append(dgname);
            Supplier<SocketBinding> groupBindingSupplier = builder.requires(groupBinding);
            groupBindings.put(key, groupBindingSupplier);
        }
        service = new ExternalConnectionFactoryService(getDiscoveryGroup(context, dgname), commandDispatcherFactories, groupBindings, clusterNames, jmsFactoryType, ha, enable1Prefixes, config);
    } else {
        Map<String, Supplier<SocketBinding>> socketBindings = new HashMap<>();
        Map<String, Supplier<OutboundSocketBinding>> outboundSocketBindings = new HashMap<>();
        Set<String> connectorsSocketBindings = new HashSet<>();
        TransportConfiguration[] transportConfigurations = TransportConfigOperationHandlers.processConnectors(context, connectorNames, connectorsSocketBindings);
        Map<String, Boolean> outbounds = TransportConfigOperationHandlers.listOutBoundSocketBinding(context, connectorsSocketBindings);
        for (final String connectorSocketBinding : connectorsSocketBindings) {
            // find whether the connectorSocketBinding references a SocketBinding or an OutboundSocketBinding
            if (outbounds.get(connectorSocketBinding)) {
                final ServiceName outboundSocketName = OutboundSocketBinding.OUTBOUND_SOCKET_BINDING_BASE_SERVICE_NAME.append(connectorSocketBinding);
                Supplier<OutboundSocketBinding> outboundSupplier = builder.requires(outboundSocketName);
                outboundSocketBindings.put(connectorSocketBinding, outboundSupplier);
            } else {
                final ServiceName socketName = SocketBinding.JBOSS_BINDING_NAME.append(connectorSocketBinding);
                Supplier<SocketBinding> socketBindingsSupplier = builder.requires(socketName);
                socketBindings.put(connectorSocketBinding, socketBindingsSupplier);
            }
        }
        service = new ExternalConnectionFactoryService(transportConfigurations, socketBindings, outboundSocketBindings, jmsFactoryType, ha, enable1Prefixes, config);
    }
    builder.setInstance(service);
    builder.install();
    for (String entry : Common.ENTRIES.unwrap(context, model)) {
        MessagingLogger.ROOT_LOGGER.debugf("Referencing %s with JNDI name %s", serviceName, entry);
        BinderServiceUtil.installBinderService(context.getServiceTarget(), entry, service, serviceName);
    }
}
Also used : OutboundSocketBinding(org.jboss.as.network.OutboundSocketBinding) SocketBinding(org.jboss.as.network.SocketBinding) OutboundSocketBinding(org.jboss.as.network.OutboundSocketBinding) HashMap(java.util.HashMap) BroadcastCommandDispatcherFactory(org.wildfly.extension.messaging.activemq.broadcast.BroadcastCommandDispatcherFactory) TransportConfiguration(org.apache.activemq.artemis.api.core.TransportConfiguration) Supplier(java.util.function.Supplier) ConnectionFactoryConfiguration(org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration) HashSet(java.util.HashSet) Resource(org.jboss.as.controller.registry.Resource) JMSFactoryType(org.apache.activemq.artemis.api.jms.JMSFactoryType) ServiceName(org.jboss.msc.service.ServiceName) ModelNode(org.jboss.dmr.ModelNode)

Aggregations

ConnectionFactoryConfiguration (org.apache.activemq.artemis.jms.server.config.ConnectionFactoryConfiguration)20 ConnectionFactoryConfigurationImpl (org.apache.activemq.artemis.jms.server.config.impl.ConnectionFactoryConfigurationImpl)17 ArrayList (java.util.ArrayList)8 Test (org.junit.Test)7 TransportConfiguration (org.apache.activemq.artemis.api.core.TransportConfiguration)5 ActiveMQConnectionFactory (org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory)5 HashMap (java.util.HashMap)3 PersistedConnectionFactory (org.apache.activemq.artemis.jms.persistence.config.PersistedConnectionFactory)3 JMSConfiguration (org.apache.activemq.artemis.jms.server.config.JMSConfiguration)3 JMSConfigurationImpl (org.apache.activemq.artemis.jms.server.config.impl.JMSConfigurationImpl)3 JMSQueueConfigurationImpl (org.apache.activemq.artemis.jms.server.config.impl.JMSQueueConfigurationImpl)3 Connection (javax.jms.Connection)2 ConnectionFactory (javax.jms.ConnectionFactory)2 Queue (javax.jms.Queue)2 JMSFactoryType (org.apache.activemq.artemis.api.jms.JMSFactoryType)2 JndiBindingRegistry (org.apache.activemq.artemis.core.registry.JndiBindingRegistry)2 JMSServerManagerImpl (org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl)2 InVMNamingContext (org.apache.activemq.artemis.tests.unit.util.InVMNamingContext)2 ModelNode (org.jboss.dmr.ModelNode)2 ServiceName (org.jboss.msc.service.ServiceName)2