Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
xml
xml
<component name="TheComponent">
   <implementation.java .../>
   <reference name="service">
      <binding.jms>
         <connectionFactory name="TheFactory"/>
         <destination name="ServiceQueue"/>
      </binding.jms>
   </reference>
</component>

Using the DSL

The following is an example provider that configures a channel with an ActiveMQ connection factory. Note the use of an environment variable - 'local' - to set the broker URL:

Code Block
languagejava
public class ServiceCompositeProvider {
 
    @Provides
    public static Composite createComposite(@Environment String environment) {
        CompositeBuilder compositeBuilder = CompositeBuilder.newBuilder(SERVICE_COMPOSITE_QNAME);
        createConnectionFactory(compositeBuilder);
        createChannel(compositeBuilder);
        return compositeBuilder.build();
    }

    private static void createChannel(CompositeBuilder compositeBuilder) {
        JmsBindingDefinitionBuilder bindingBuilder = JmsBindingDefinitionBuilder.newBuilder();
        bindingBuilder.destination(MESSAGE_TOPIC, TOPIC);
        bindingBuilder.localDelivery(true);
        bindingBuilder.connectionFactoryName("ConnectionFactory");
        bindingBuilder.durable(true);
        bindingBuilder.cacheLevel(CacheLevel.ADMINISTERED_OBJECTS);
        BindingDefinition binding = bindingBuilder.build();
        ChannelDefinitionBuilder channelBuilder = ChannelDefinitionBuilder.newBuilder(MESSAGE_CHANNEL);
        channelBuilder.binding(binding);
        compositeBuilder.channel(channelBuilder.build());
    }
    private static void createConnectionFactory(CompositeBuilder compositeBuilder) {
        ConnectionFactoryResourceBuilder resourceBuilder = ConnectionFactoryResourceBuilder.newBuilder("ConnectionFactory");
        resourceBuilder.username("test");
        resourceBuilder.password("test");
        boolean isLocal = Boolean.parseBoolean(System.getProperty("local"));
        if (isLocal) {
            resourceBuilder.attribute("broker.uri", URI.create("tcp://localhost:61616"));
        } else {
            resourceBuilder.attribute("broker.uri", URI.create("ssl://broker:61616"));
        }
        resourceBuilder.clientId("{runtime}");
        resourceBuilder.type(ConnectionFactoryType.LOCAL);
        compositeBuilder.resource(resourceBuilder.build());
    }
}

Configuring the Embedded ActiveMQ Broker

...