diff --git a/messaging/src/main/java/edu/tamu/weaver/messaging/annotation/WeaverMessageListener.java b/messaging/src/main/java/edu/tamu/weaver/messaging/annotation/WeaverMessageListener.java index 666b5e8d..7111863e 100644 --- a/messaging/src/main/java/edu/tamu/weaver/messaging/annotation/WeaverMessageListener.java +++ b/messaging/src/main/java/edu/tamu/weaver/messaging/annotation/WeaverMessageListener.java @@ -19,4 +19,7 @@ @AliasFor(annotation = JmsListener.class, attribute = "destination") String destination() default "default"; + + @AliasFor(annotation = JmsListener.class, attribute = "containerFactory") + String containerFactory() default ""; } \ No newline at end of file diff --git a/messaging/src/main/java/edu/tamu/weaver/messaging/config/MessagingConfig.java b/messaging/src/main/java/edu/tamu/weaver/messaging/config/MessagingConfig.java new file mode 100644 index 00000000..996ecf63 --- /dev/null +++ b/messaging/src/main/java/edu/tamu/weaver/messaging/config/MessagingConfig.java @@ -0,0 +1,44 @@ +package edu.tamu.weaver.messaging.config; + +import org.apache.activemq.ActiveMQConnectionFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jms.config.DefaultJmsListenerContainerFactory; +import org.springframework.jms.config.JmsListenerContainerFactory; +import org.springframework.jms.connection.CachingConnectionFactory; +import org.springframework.jms.core.JmsTemplate; + +@Configuration +public class MessagingConfig { + + @Value("${spring.activemq.broker-url}") + private String brokerUrl; + + @Bean + public CachingConnectionFactory cachingConnectionFactory() { + return new CachingConnectionFactory(defaultActiveMQConnectionFactory()); + } + + @Bean + public JmsTemplate jmsTopicTemplate() { + JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory()); + jmsTemplate.setPubSubDomain(true); + return jmsTemplate; + } + + public ActiveMQConnectionFactory defaultActiveMQConnectionFactory() { + ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(); + activeMQConnectionFactory.setBrokerURL(brokerUrl); + return activeMQConnectionFactory; + } + + @Bean + public JmsListenerContainerFactory topicContainerFactory() { + DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); + factory.setConnectionFactory(defaultActiveMQConnectionFactory()); + factory.setPubSubDomain(true); + return factory; + } + +} diff --git a/messaging/src/main/java/edu/tamu/weaver/messaging/service/MessagingService.java b/messaging/src/main/java/edu/tamu/weaver/messaging/service/MessagingService.java index 94a8538b..443d97f8 100644 --- a/messaging/src/main/java/edu/tamu/weaver/messaging/service/MessagingService.java +++ b/messaging/src/main/java/edu/tamu/weaver/messaging/service/MessagingService.java @@ -4,6 +4,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsMessagingTemplate; +import org.springframework.jms.core.JmsTemplate; import org.springframework.messaging.Message; import org.springframework.messaging.support.MessageBuilder; import org.springframework.stereotype.Service; @@ -14,8 +15,8 @@ public class MessagingService { private final JmsMessagingTemplate jmsTemplate; @Autowired - public MessagingService(JmsMessagingTemplate jmsTemplate) { - this.jmsTemplate = jmsTemplate; + public MessagingService(JmsTemplate jmsTopicTemplate) { + this.jmsTemplate = new JmsMessagingTemplate(jmsTopicTemplate); } public void sendMessage(String destination, Map payload) {