Guest User

Untitled

a guest
Oct 23rd, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.73 KB | None | 0 0
  1. import org.apache.activemq.ActiveMQConnectionFactory
  2. import org.apache.activemq.RedeliveryPolicy
  3. import org.apache.activemq.camel.component.ActiveMQComponent
  4. import org.springframework.beans.factory.annotation.Qualifier
  5. import org.springframework.context.annotation.Bean
  6. import org.springframework.context.annotation.Configuration
  7. import org.springframework.jms.connection.JmsTransactionManager
  8.  
  9. import javax.jms.DeliveryMode
  10.  
  11. @Configuration
  12. class ActiveMQConfiguration {
  13.  
  14. @Bean
  15. ActiveMQConnectionFactory activeMQConnectionFactory() {
  16. ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory()
  17. activeMQConnectionFactory.brokerURL = 'tcp://localhost:61616'
  18. activeMQConnectionFactory.userName = 'admin'
  19. activeMQConnectionFactory.password = 'admin'
  20.  
  21. RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy()
  22. redeliveryPolicy.maximumRedeliveries = 3
  23. redeliveryPolicy.redeliveryDelay = 150L
  24. redeliveryPolicy.useExponentialBackOff = true
  25. redeliveryPolicy.backOffMultiplier = 1.5
  26.  
  27. activeMQConnectionFactory.setRedeliveryPolicy(redeliveryPolicy)
  28.  
  29. activeMQConnectionFactory
  30. }
  31.  
  32. @Bean
  33. ActiveMQComponent activeMQComponent(@Qualifier('activeMQConnectionFactory')ActiveMQConnectionFactory activeMQConnectionFactory) {
  34. ActiveMQComponent activeMQComponent = new ActiveMQComponent()
  35. activeMQComponent.connectionFactory = activeMQConnectionFactory
  36. activeMQComponent.transacted = true
  37. activeMQComponent.transactionManager = txManager()
  38. activeMQComponent.cacheLevelName = 'CACHE_CONSUMER'
  39. activeMQComponent.lazyCreateTransactionManager = false
  40. activeMQComponent.deliveryMode = DeliveryMode.PERSISTENT
  41.  
  42. activeMQComponent
  43. }
  44.  
  45. @Bean
  46. JmsTransactionManager txManager(@Qualifier('activeMQConnectionFactory') ActiveMQConnectionFactory activeMQConnectionFactory) {
  47. JmsTransactionManager txManager = new JmsTransactionManager()
  48. txManager.connectionFactory = activeMQConnectionFactory
  49. txManager.rollbackOnCommitFailure = true
  50.  
  51. txManager
  52. }
  53.  
  54. }
  55.  
  56. @Configuration
  57. @EnableJms
  58. public class JmsConfig {
  59.  
  60. private Environment env;
  61.  
  62. @Autowired
  63. public void setEnv(Environment env) {
  64. this.env = env;
  65. }
  66.  
  67. @Bean(name = "activemq")
  68. public ActiveMQComponent activemq(@Qualifier("activemqTransactionManager") JmsTransactionManager jmsTransactionManager,
  69. @Qualifier("activemqConnectionFactory") ConnectionFactory connectionFactory) {
  70. ActiveMQComponent activeMQComponent = new ActiveMQComponent();
  71. activeMQComponent.setTransactionManager(jmsTransactionManager);
  72. activeMQComponent.setConnectionFactory(connectionFactory);
  73. return activeMQComponent;
  74. }
  75.  
  76. @Bean(name = "activemqJmsTemplate")
  77. public JmsTemplate jmsTemplate(@Qualifier("activemqConnectionFactory") ConnectionFactory connectionFactory) {
  78. JmsTemplate template = new JmsTemplate();
  79. template.setConnectionFactory(connectionFactory);
  80. return template;
  81. }
  82.  
  83. @Bean(name = "activemqTransactionPolicy")
  84. public SpringTransactionPolicy activemqTransactionPolicy(
  85. @Qualifier("activemqTransactionManager") JmsTransactionManager jmsTransactionManager) {
  86. SpringTransactionPolicy springTransactionPolicy = new SpringTransactionPolicy(jmsTransactionManager);
  87. springTransactionPolicy.setPropagationBehaviorName("PROPAGATION_REQUIRED");
  88. return springTransactionPolicy;
  89. }
  90.  
  91. @Bean(name = "activemqTransactionManager")
  92. public JmsTransactionManager activemqTransactionManager(
  93. @Qualifier("activemqConnectionFactory") ConnectionFactory connectionFactory) {
  94. return new JmsTransactionManager(connectionFactory);
  95. }
  96.  
  97. @Bean(name = "activemqConnectionFactory")
  98. public ConnectionFactory connectionFactory(@Qualifier("activemqRedeliveryPolicy") RedeliveryPolicy redeliveryPolicy) {
  99. ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
  100. connectionFactory.setBrokerURL("tcp://" + env.getProperty("queue.url"));
  101. connectionFactory.setTrustAllPackages(true);
  102.  
  103. RedeliveryPolicyMap map = connectionFactory.getRedeliveryPolicyMap();
  104. map.put(new ActiveMQQueue("queueName.DLQ"), redeliveryPolicy);
  105. return connectionFactory;
  106. }
  107.  
  108. @Bean(name = "activemqRedeliveryPolicy")
  109. public RedeliveryPolicy redeliveryPolicy() {
  110. RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
  111. redeliveryPolicy.setMaximumRedeliveries(0);
  112. return redeliveryPolicy;
  113. }
  114. }
  115.  
  116. <destinationPolicy>
  117. <policyMap>
  118. <policyEntries>
  119. <!--set dead letter queue for our queue. It name will be "myQueueName.DLQ"-->
  120. <policyEntry queue="myQueueName">
  121. <deadLetterStrategy>
  122. <individualDeadLetterStrategy queuePrefix="" queueSuffix=".DLQ"/>
  123. </deadLetterStrategy>
  124. </policyEntry>
  125. <policyEntry topic=">">
  126. <pendingMessageLimitStrategy>
  127. <constantPendingMessageLimitStrategy limit="1000"/>
  128. </pendingMessageLimitStrategy>
  129. </policyEntry>
  130. </policyEntries>
  131. </policyMap>
  132. </destinationPolicy>
  133.  
  134. <plugins>
  135. <redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
  136. <redeliveryPolicyMap>
  137. <redeliveryPolicyMap>
  138. <redeliveryPolicyEntries>
  139. <!--Set the redelivery delay to one hour-->
  140. <redeliveryPolicy queue="myQueueName.DLQ" maximumRedeliveries="-1" redeliveryDelay="3600000"/>
  141. </redeliveryPolicyEntries>
  142. </redeliveryPolicyMap>
  143. </redeliveryPolicyMap>
  144. </redeliveryPlugin>
  145. </plugins>
Add Comment
Please, Sign In to add comment