Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.apache.activemq.ActiveMQConnectionFactory
- import org.apache.activemq.RedeliveryPolicy
- import org.apache.activemq.camel.component.ActiveMQComponent
- import org.springframework.beans.factory.annotation.Qualifier
- import org.springframework.context.annotation.Bean
- import org.springframework.context.annotation.Configuration
- import org.springframework.jms.connection.JmsTransactionManager
- import javax.jms.DeliveryMode
- @Configuration
- class ActiveMQConfiguration {
- @Bean
- ActiveMQConnectionFactory activeMQConnectionFactory() {
- ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory()
- activeMQConnectionFactory.brokerURL = 'tcp://localhost:61616'
- activeMQConnectionFactory.userName = 'admin'
- activeMQConnectionFactory.password = 'admin'
- RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy()
- redeliveryPolicy.maximumRedeliveries = 3
- redeliveryPolicy.redeliveryDelay = 150L
- redeliveryPolicy.useExponentialBackOff = true
- redeliveryPolicy.backOffMultiplier = 1.5
- activeMQConnectionFactory.setRedeliveryPolicy(redeliveryPolicy)
- activeMQConnectionFactory
- }
- @Bean
- ActiveMQComponent activeMQComponent(@Qualifier('activeMQConnectionFactory')ActiveMQConnectionFactory activeMQConnectionFactory) {
- ActiveMQComponent activeMQComponent = new ActiveMQComponent()
- activeMQComponent.connectionFactory = activeMQConnectionFactory
- activeMQComponent.transacted = true
- activeMQComponent.transactionManager = txManager()
- activeMQComponent.cacheLevelName = 'CACHE_CONSUMER'
- activeMQComponent.lazyCreateTransactionManager = false
- activeMQComponent.deliveryMode = DeliveryMode.PERSISTENT
- activeMQComponent
- }
- @Bean
- JmsTransactionManager txManager(@Qualifier('activeMQConnectionFactory') ActiveMQConnectionFactory activeMQConnectionFactory) {
- JmsTransactionManager txManager = new JmsTransactionManager()
- txManager.connectionFactory = activeMQConnectionFactory
- txManager.rollbackOnCommitFailure = true
- txManager
- }
- }
- @Configuration
- @EnableJms
- public class JmsConfig {
- private Environment env;
- @Autowired
- public void setEnv(Environment env) {
- this.env = env;
- }
- @Bean(name = "activemq")
- public ActiveMQComponent activemq(@Qualifier("activemqTransactionManager") JmsTransactionManager jmsTransactionManager,
- @Qualifier("activemqConnectionFactory") ConnectionFactory connectionFactory) {
- ActiveMQComponent activeMQComponent = new ActiveMQComponent();
- activeMQComponent.setTransactionManager(jmsTransactionManager);
- activeMQComponent.setConnectionFactory(connectionFactory);
- return activeMQComponent;
- }
- @Bean(name = "activemqJmsTemplate")
- public JmsTemplate jmsTemplate(@Qualifier("activemqConnectionFactory") ConnectionFactory connectionFactory) {
- JmsTemplate template = new JmsTemplate();
- template.setConnectionFactory(connectionFactory);
- return template;
- }
- @Bean(name = "activemqTransactionPolicy")
- public SpringTransactionPolicy activemqTransactionPolicy(
- @Qualifier("activemqTransactionManager") JmsTransactionManager jmsTransactionManager) {
- SpringTransactionPolicy springTransactionPolicy = new SpringTransactionPolicy(jmsTransactionManager);
- springTransactionPolicy.setPropagationBehaviorName("PROPAGATION_REQUIRED");
- return springTransactionPolicy;
- }
- @Bean(name = "activemqTransactionManager")
- public JmsTransactionManager activemqTransactionManager(
- @Qualifier("activemqConnectionFactory") ConnectionFactory connectionFactory) {
- return new JmsTransactionManager(connectionFactory);
- }
- @Bean(name = "activemqConnectionFactory")
- public ConnectionFactory connectionFactory(@Qualifier("activemqRedeliveryPolicy") RedeliveryPolicy redeliveryPolicy) {
- ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
- connectionFactory.setBrokerURL("tcp://" + env.getProperty("queue.url"));
- connectionFactory.setTrustAllPackages(true);
- RedeliveryPolicyMap map = connectionFactory.getRedeliveryPolicyMap();
- map.put(new ActiveMQQueue("queueName.DLQ"), redeliveryPolicy);
- return connectionFactory;
- }
- @Bean(name = "activemqRedeliveryPolicy")
- public RedeliveryPolicy redeliveryPolicy() {
- RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
- redeliveryPolicy.setMaximumRedeliveries(0);
- return redeliveryPolicy;
- }
- }
- <destinationPolicy>
- <policyMap>
- <policyEntries>
- <!--set dead letter queue for our queue. It name will be "myQueueName.DLQ"-->
- <policyEntry queue="myQueueName">
- <deadLetterStrategy>
- <individualDeadLetterStrategy queuePrefix="" queueSuffix=".DLQ"/>
- </deadLetterStrategy>
- </policyEntry>
- <policyEntry topic=">">
- <pendingMessageLimitStrategy>
- <constantPendingMessageLimitStrategy limit="1000"/>
- </pendingMessageLimitStrategy>
- </policyEntry>
- </policyEntries>
- </policyMap>
- </destinationPolicy>
- <plugins>
- <redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
- <redeliveryPolicyMap>
- <redeliveryPolicyMap>
- <redeliveryPolicyEntries>
- <!--Set the redelivery delay to one hour-->
- <redeliveryPolicy queue="myQueueName.DLQ" maximumRedeliveries="-1" redeliveryDelay="3600000"/>
- </redeliveryPolicyEntries>
- </redeliveryPolicyMap>
- </redeliveryPolicyMap>
- </redeliveryPlugin>
- </plugins>
Add Comment
Please, Sign In to add comment