X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=netconf-server%2Fsrc%2Fmain%2Fjava%2Forg%2Fcommscope%2Ftr069adapter%2Fnetconf%2Fboot%2FNetConfServiceBooter.java;fp=netconf-server%2Fsrc%2Fmain%2Fjava%2Forg%2Fcommscope%2Ftr069adapter%2Fnetconf%2Fboot%2FNetConfServiceBooter.java;h=96148658052df4aa552f8723647d1b6b49614b30;hb=ce4e2d38e3d42725f61c39dd172325d2def4bc44;hp=b4ea478655236c82b6987ac8dccfe8f6a9aa1e8d;hpb=597b7c7a33b3f636263fd7297e3d257eb6b56175;p=oam%2Ftr069-adapter.git diff --git a/netconf-server/src/main/java/org/commscope/tr069adapter/netconf/boot/NetConfServiceBooter.java b/netconf-server/src/main/java/org/commscope/tr069adapter/netconf/boot/NetConfServiceBooter.java index b4ea478..9614865 100644 --- a/netconf-server/src/main/java/org/commscope/tr069adapter/netconf/boot/NetConfServiceBooter.java +++ b/netconf-server/src/main/java/org/commscope/tr069adapter/netconf/boot/NetConfServiceBooter.java @@ -18,17 +18,35 @@ package org.commscope.tr069adapter.netconf.boot; +import java.util.Arrays; +import javax.jms.ConnectionFactory; +import org.apache.activemq.ActiveMQConnectionFactory; +import org.apache.activemq.RedeliveryPolicy; +import org.apache.activemq.broker.BrokerService; +import org.apache.activemq.broker.region.policy.RedeliveryPolicyMap; +import org.apache.activemq.command.ActiveMQQueue; import org.commscope.tr069adapter.netconf.server.NetConfServerManagerImpl; +import org.commscope.tr069adapter.netconf.server.utils.NetConfServerConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer; import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jms.annotation.EnableJms; +import org.springframework.jms.config.DefaultJmsListenerContainerFactory; +import org.springframework.jms.config.JmsListenerContainerFactory; +import org.springframework.jms.listener.MessageListenerContainer; +import org.springframework.jms.support.converter.MappingJackson2MessageConverter; +import org.springframework.jms.support.converter.MessageConverter; +import org.springframework.jms.support.converter.MessageType; import org.springframework.retry.annotation.EnableRetry; +@EnableJms @SpringBootApplication @ComponentScan({"org.commscope.tr069adapter.netconf", "org.opendaylight.netconf.test", "org.commscope.tr069adapter.common"}) @@ -57,4 +75,61 @@ public class NetConfServiceBooter { public static ApplicationContext getApplicationContext() { return appContext; } + + /* + * JMS Configuration Defining the connection factories used in the application Setting the + * Re-delivery configuration goes here + */ + @Bean + public BrokerService broker() throws Exception { + final BrokerService broker = new BrokerService(); + broker.addConnector("tcp://localhost:61616"); + broker.addConnector("vm://localhost"); + broker.setPersistent(false); + return broker; + } + + @Bean + public ConnectionFactory jmsConnectionFactory() { + ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); + connectionFactory + .setTrustedPackages(Arrays.asList("org.commscope", "org.commscope.tr069adapter")); + connectionFactory.setMaxThreadPoolSize(7); + + ActiveMQQueue notificationQueue = new ActiveMQQueue(NetConfServerConstants.NETCONF_NOTIFICATION_Q); + RedeliveryPolicy notificationQueuePolicy = new RedeliveryPolicy(); + notificationQueuePolicy.setInitialRedeliveryDelay(2* 60 * 1000L); + notificationQueuePolicy.setUseCollisionAvoidance(true); + notificationQueuePolicy.setRedeliveryDelay(2* 60 * 1000L); + notificationQueuePolicy.setUseExponentialBackOff(false); + notificationQueuePolicy.setMaximumRedeliveries(3); + notificationQueuePolicy.setDestination(notificationQueue); + + RedeliveryPolicyMap rdMap = connectionFactory.getRedeliveryPolicyMap(); + rdMap.put(notificationQueue, notificationQueuePolicy); + return connectionFactory; + } + + @Bean + public JmsListenerContainerFactory netConfNotificationCF( + ConnectionFactory connectionFactory, + DefaultJmsListenerContainerFactoryConfigurer configurer) { + return handleJMSCommonConfiguration(connectionFactory, configurer); + } + + public JmsListenerContainerFactory handleJMSCommonConfiguration( + ConnectionFactory connectionFactory, + DefaultJmsListenerContainerFactoryConfigurer configurer) { + DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); + configurer.configure(factory, connectionFactory); + return factory; + } + + @Bean + public MessageConverter jacksonJmsMessageConverter() { + MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); + converter.setTargetType(MessageType.TEXT); + converter.setTypeIdPropertyName("_type"); + return converter; + } }