diff --git a/src/functionalTest/java/co/com/bancolombia/PluginCleanFunctionalTest.java b/src/functionalTest/java/co/com/bancolombia/PluginCleanFunctionalTest.java index 5139e6cb..f9379bef 100644 --- a/src/functionalTest/java/co/com/bancolombia/PluginCleanFunctionalTest.java +++ b/src/functionalTest/java/co/com/bancolombia/PluginCleanFunctionalTest.java @@ -870,7 +870,6 @@ public void shouldGenerateMQEntryPoint() { new File( "build/functionalTest/infrastructure/entry-points/mq-listener/src/main/java/co/com/bancolombia/mq/listener/SampleMQMessageListener.java") .exists()); - validateMQCommon(); assertEquals(result.task(":" + task).getOutcome(), TaskOutcome.SUCCESS); } @@ -891,23 +890,9 @@ public void shouldGenerateMQDrivenAdapter() { new File( "build/functionalTest/infrastructure/driven-adapters/mq-sender/src/main/java/co/com/bancolombia/mq/sender/SampleMQMessageSender.java") .exists()); - validateMQCommon(); assertEquals(result.task(":" + task).getOutcome(), TaskOutcome.SUCCESS); } - private void validateMQCommon() { - assertTrue( - new File("build/functionalTest/infrastructure/helpers/mq-common/build.gradle").exists()); - assertTrue( - new File( - "build/functionalTest/infrastructure/helpers/mq-common/src/main/java/co/com/bancolombia/mq/common/MQReactiveMessageListener.java") - .exists()); - assertTrue( - new File( - "build/functionalTest/infrastructure/helpers/mq-common/src/main/java/co/com/bancolombia/mq/common/api/MQMessageSender.java") - .exists()); - } - private void writeString(File file, String string) throws IOException { try (Writer writer = new FileWriter(file)) { writer.write(string); diff --git a/src/main/java/co/com/bancolombia/Constants.java b/src/main/java/co/com/bancolombia/Constants.java index 52500e1a..0dbc9782 100644 --- a/src/main/java/co/com/bancolombia/Constants.java +++ b/src/main/java/co/com/bancolombia/Constants.java @@ -20,7 +20,7 @@ public class Constants { public static final String GRADLE_WRAPPER_VERSION = "6.7"; public static final String TOMCAT_EXCLUSION = "compile.exclude group: \"org.springframework.boot\", module:\"spring-boot-starter-tomcat\""; - public static final String MQ_CLIENT_VERSION = "2.5.0"; + public static final String COMMONS_JMS_VERSION = "0.0.1"; public enum BooleanOption { TRUE, diff --git a/src/main/java/co/com/bancolombia/factory/ModuleBuilder.java b/src/main/java/co/com/bancolombia/factory/ModuleBuilder.java index cd50247a..596e65f3 100644 --- a/src/main/java/co/com/bancolombia/factory/ModuleBuilder.java +++ b/src/main/java/co/com/bancolombia/factory/ModuleBuilder.java @@ -55,7 +55,7 @@ public ModuleBuilder(Project project) { params.put("objectMapperVersion", Constants.RCOMMONS_OBJECT_MAPPER_VERSION); params.put("coberturaVersion", Constants.COBERTURA_VERSION); params.put("lombokVersion", Constants.LOMBOK_VERSION); - params.put("mqVersion", Constants.MQ_CLIENT_VERSION); + params.put("commonsJmsVersion", Constants.COMMONS_JMS_VERSION); try { loadPackage(); } catch (IOException e) { diff --git a/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterKms.java b/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterKms.java index 014fafbd..a32bd1e0 100644 --- a/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterKms.java +++ b/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterKms.java @@ -4,10 +4,8 @@ import co.com.bancolombia.factory.ModuleBuilder; import co.com.bancolombia.factory.ModuleFactory; import java.io.IOException; -import lombok.AllArgsConstructor; import org.gradle.api.logging.Logger; -@AllArgsConstructor public class DrivenAdapterKms implements ModuleFactory { @Override diff --git a/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterMQ.java b/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterMQ.java index 08b109a8..5fa13b0c 100644 --- a/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterMQ.java +++ b/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterMQ.java @@ -3,12 +3,9 @@ import co.com.bancolombia.exceptions.CleanException; import co.com.bancolombia.factory.ModuleBuilder; import co.com.bancolombia.factory.ModuleFactory; -import co.com.bancolombia.factory.commons.MQCommonFactory; import co.com.bancolombia.factory.validations.ReactiveTypeValidation; import java.io.IOException; -import lombok.AllArgsConstructor; -@AllArgsConstructor public class DrivenAdapterMQ implements ModuleFactory { @Override @@ -17,6 +14,13 @@ public void buildModule(ModuleBuilder builder) throws IOException, CleanExceptio builder.setupFromTemplate("driven-adapter/mq-sender"); builder.appendToSettings("mq-sender", "infrastructure/driven-adapters"); builder.appendDependencyToModule("app-service", "implementation project(':mq-sender')"); - new MQCommonFactory().buildModule(builder); + + builder + .appendToProperties("commons.jms") + .put("output-concurrency", 10) + .put("output-queue", "DEV.QUEUE.1") + .put("producer-ttl", 0) + .put("reactive", builder.isReactive()); + builder.appendToProperties("ibm.mq").put("channel", "DEV.APP.SVRCONN").put("user", "app"); } } diff --git a/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterRedis.java b/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterRedis.java index 29d8e66f..3571ab59 100644 --- a/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterRedis.java +++ b/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterRedis.java @@ -5,10 +5,8 @@ import co.com.bancolombia.factory.ModuleFactory; import co.com.bancolombia.factory.commons.ObjectMapperFactory; import java.io.IOException; -import lombok.AllArgsConstructor; import org.gradle.api.logging.Logger; -@AllArgsConstructor public class DrivenAdapterRedis implements ModuleFactory { public static final String PARAM_MODE = "task-param-mode"; diff --git a/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterS3.java b/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterS3.java index 9a435b35..cc9a1c81 100644 --- a/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterS3.java +++ b/src/main/java/co/com/bancolombia/factory/adapters/DrivenAdapterS3.java @@ -4,10 +4,8 @@ import co.com.bancolombia.factory.ModuleBuilder; import co.com.bancolombia.factory.ModuleFactory; import java.io.IOException; -import lombok.AllArgsConstructor; import org.gradle.api.logging.Logger; -@AllArgsConstructor public class DrivenAdapterS3 implements ModuleFactory { @Override diff --git a/src/main/java/co/com/bancolombia/factory/commons/MQCommonFactory.java b/src/main/java/co/com/bancolombia/factory/commons/MQCommonFactory.java deleted file mode 100644 index 4aefcb4a..00000000 --- a/src/main/java/co/com/bancolombia/factory/commons/MQCommonFactory.java +++ /dev/null @@ -1,22 +0,0 @@ -package co.com.bancolombia.factory.commons; - -import co.com.bancolombia.exceptions.CleanException; -import co.com.bancolombia.factory.ModuleBuilder; -import co.com.bancolombia.factory.ModuleFactory; -import java.io.IOException; - -public class MQCommonFactory implements ModuleFactory { - - @Override - public void buildModule(ModuleBuilder builder) throws IOException, CleanException { - builder.setupFromTemplate("commons/mq-common"); - builder - .appendToProperties("ibm") - .put("output-concurrency", 10) - .put("output-queue", "DEV.QUEUE.1") - .put("input-concurrency", 10) - .put("input-queue", "DEV.QUEUE.2"); - builder.appendToProperties("ibm.mq").put("channel", "DEV.APP.SVRCONN").put("user", "app"); - builder.appendToSettings("mq-common", "infrastructure/helpers"); - } -} diff --git a/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointMQ.java b/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointMQ.java index 86bfadf4..587418d3 100644 --- a/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointMQ.java +++ b/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointMQ.java @@ -3,7 +3,6 @@ import co.com.bancolombia.exceptions.CleanException; import co.com.bancolombia.factory.ModuleBuilder; import co.com.bancolombia.factory.ModuleFactory; -import co.com.bancolombia.factory.commons.MQCommonFactory; import co.com.bancolombia.factory.validations.ReactiveTypeValidation; import java.io.IOException; @@ -15,6 +14,13 @@ public void buildModule(ModuleBuilder builder) throws IOException, CleanExceptio builder.setupFromTemplate("entry-point/mq-listener"); builder.appendToSettings("mq-listener", "infrastructure/entry-points"); builder.appendDependencyToModule("app-service", "implementation project(':mq-listener')"); - new MQCommonFactory().buildModule(builder); + + builder + .appendToProperties("commons.jms") + .put("input-concurrency", 10) + .put("input-queue", "DEV.QUEUE.2") + .put("input-queue-alias", "") + .put("reactive", builder.isReactive()); + builder.appendToProperties("ibm.mq").put("channel", "DEV.APP.SVRCONN").put("user", "app"); } } diff --git a/src/main/resources/commons/mq-common/api/mq-destination-provider.java.mustache b/src/main/resources/commons/mq-common/api/mq-destination-provider.java.mustache deleted file mode 100644 index 53462bee..00000000 --- a/src/main/resources/commons/mq-common/api/mq-destination-provider.java.mustache +++ /dev/null @@ -1,8 +0,0 @@ -package {{package}}.mq.common.api; - -import javax.jms.Destination; -import javax.jms.JMSContext; - -public interface MQDestinationProvider { - Destination create(JMSContext context); -} diff --git a/src/main/resources/commons/mq-common/api/mq-message-creator.java.mustache b/src/main/resources/commons/mq-common/api/mq-message-creator.java.mustache deleted file mode 100644 index ff8cdcb6..00000000 --- a/src/main/resources/commons/mq-common/api/mq-message-creator.java.mustache +++ /dev/null @@ -1,9 +0,0 @@ -package {{package}}.mq.common.api; - -import javax.jms.JMSContext; -import javax.jms.JMSException; -import javax.jms.Message; - -public interface MQMessageCreator { - Message create(JMSContext context) throws JMSException; -} diff --git a/src/main/resources/commons/mq-common/api/mq-message-sender.java.mustache b/src/main/resources/commons/mq-common/api/mq-message-sender.java.mustache deleted file mode 100644 index 4402506f..00000000 --- a/src/main/resources/commons/mq-common/api/mq-message-sender.java.mustache +++ /dev/null @@ -1,11 +0,0 @@ -package {{package}}.mq.common.api; - -import reactor.core.publisher.Mono; - -import javax.jms.Destination; - -public interface MQMessageSender { - Mono send(Destination destination, MQMessageCreator messageCreator); - - Mono send(MQMessageCreator messageCreator); -} diff --git a/src/main/resources/commons/mq-common/api/mq-temporary-queues-container.java.mustache b/src/main/resources/commons/mq-common/api/mq-temporary-queues-container.java.mustache deleted file mode 100644 index 07fac2cf..00000000 --- a/src/main/resources/commons/mq-common/api/mq-temporary-queues-container.java.mustache +++ /dev/null @@ -1,9 +0,0 @@ -package {{package}}.mq.common.api; - -import javax.jms.TemporaryQueue; - -public interface MQTemporaryQueuesContainer { - void registerTemporaryQueue(String alias, TemporaryQueue queue); - - TemporaryQueue get(String alias); -} diff --git a/src/main/resources/commons/mq-common/build.gradle.mustache b/src/main/resources/commons/mq-common/build.gradle.mustache deleted file mode 100644 index 58296e4a..00000000 --- a/src/main/resources/commons/mq-common/build.gradle.mustache +++ /dev/null @@ -1,4 +0,0 @@ -dependencies { - compile 'org.springframework:spring-context' - compile 'com.ibm.mq:mq-jms-spring-boot-starter:{{mqVersion}}' -} diff --git a/src/main/resources/commons/mq-common/config/exceptions/mq-invalid-listener-setup.java.mustache b/src/main/resources/commons/mq-common/config/exceptions/mq-invalid-listener-setup.java.mustache deleted file mode 100644 index bd10a49b..00000000 --- a/src/main/resources/commons/mq-common/config/exceptions/mq-invalid-listener-setup.java.mustache +++ /dev/null @@ -1,7 +0,0 @@ -package {{package}}.mq.common.config.exceptions; - -public class MQInvalidListenerSetup extends RuntimeException { - public MQInvalidListenerSetup(String message) { - super(message); - } -} diff --git a/src/main/resources/commons/mq-common/config/mq-listener-annotation-processor.java.mustache b/src/main/resources/commons/mq-common/config/mq-listener-annotation-processor.java.mustache deleted file mode 100644 index 6816c63c..00000000 --- a/src/main/resources/commons/mq-common/config/mq-listener-annotation-processor.java.mustache +++ /dev/null @@ -1,134 +0,0 @@ -package {{package}}.mq.common.config; - -import {{package}}.mq.common.MQListener; -import {{package}}.mq.common.MQListeners; -import {{package}}.mq.common.MQReactiveMessageListener; -import {{package}}.mq.common.api.MQTemporaryQueuesContainer; -import {{package}}.mq.common.config.exceptions.MQInvalidListenerSetup; -import {{package}}.mq.common.utils.MQMessageListenerUtils; -{{#lombok}} -import lombok.RequiredArgsConstructor; -import lombok.extern.log4j.Log4j2; -{{/lombok}} -{{^lombok}} -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -{{/lombok}} -import org.springframework.aop.framework.AopProxyUtils; -import org.springframework.aop.support.AopUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.BeanFactory; -import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.BeanInitializationException; -import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.beans.factory.config.EmbeddedValueResolver; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.MethodIntrospector; -import org.springframework.core.annotation.AnnotatedElementUtils; -import org.springframework.core.annotation.AnnotationUtils; -import org.springframework.messaging.handler.invocation.reactive.InvocableHandlerMethod; -import org.springframework.util.StringUtils; -import org.springframework.util.StringValueResolver; - -import javax.jms.ConnectionFactory; -import javax.jms.JMSRuntimeException; -import java.lang.reflect.Method; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -{{#lombok}} -@Log4j2 -@RequiredArgsConstructor -{{/lombok}} -@Configuration -public class MQListenerAnnotationProcessor implements BeanPostProcessor, BeanFactoryAware { - {{^lombok}} - private static final Logger log = LogManager.getLogger(MQListenerAnnotationProcessor.class); - {{/lombok}} - private final BeanFactory beanFactory; - private StringValueResolver embeddedValueResolver; - - {{^lombok}} - public MQListenerAnnotationProcessor(final BeanFactory beanFactory) { - this.beanFactory = beanFactory; - } - - {{/lombok}} - @Override - public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - Class targetClass = AopProxyUtils.ultimateTargetClass(bean); - if (AnnotationUtils.isCandidateClass(targetClass, MQListener.class)) { - Map> annotatedMethods = MethodIntrospector.selectMethods(targetClass, - (MethodIntrospector.MetadataLookup>) method -> { - Set listenerMethods = AnnotatedElementUtils.getMergedRepeatableAnnotations( - method, MQListener.class, MQListeners.class); - return (!listenerMethods.isEmpty() ? listenerMethods : null); - }); - if (!annotatedMethods.isEmpty()) { - annotatedMethods.forEach((method, listeners) -> - listeners.forEach(listener -> processJmsListener(listener, beanName, method, bean))); - if (log.isInfoEnabled()) { - log.info("{} @MQListener methods processed on bean '{}': {}", - annotatedMethods.size(), beanName, annotatedMethods); - } - } - } - return BeanPostProcessor.super.postProcessAfterInitialization(bean, beanName); - } - - protected void processJmsListener(MQListener mqListener, String beanName, Method mostSpecificMethod, Object bean) { - Method invocableMethod = AopUtils.selectInvocableMethod(mostSpecificMethod, bean.getClass()); - InvocableHandlerMethod handlerMethod = new InvocableHandlerMethod(bean, invocableMethod); - MQReactiveMessageListener processor = new MQReactiveMessageListener(beanName, handlerMethod); - ConnectionFactory cf = resolveConnectionFactory(mqListener.connectionFactory()); - MQTemporaryQueuesContainer temporaryQueuesContainer = beanFactory.getBean(MQTemporaryQueuesContainer.class); - MQListenerConfig config = validateConfiguration(mqListener); - try { - MQMessageListenerUtils.createListeners(cf, processor, temporaryQueuesContainer, config); - } catch (JMSRuntimeException ex) { - throw new BeanInitializationException("Could not register MQ listener on [" + - mostSpecificMethod + "], using ConnectionFactory: " + cf, ex); - } - } - - private ConnectionFactory resolveConnectionFactory(String connectionFactory) { - if (StringUtils.hasText(connectionFactory)) { - return beanFactory.getBean(connectionFactory, ConnectionFactory.class); - } else { - return beanFactory.getBean(ConnectionFactory.class); - } - } - - private MQListenerConfig validateConfiguration(MQListener config) { - int concurrency = Integer.parseInt(Objects. - requireNonNull(embeddedValueResolver.resolveStringValue(config.concurrency()))); - String queue = embeddedValueResolver.resolveStringValue(config.value()); - MQListenerConfig listener = MQListenerConfig.builder() - .async(config.async()) - .mqmd(config.mqmd()) - .concurrency(concurrency) - .queue(queue) - .tempQueueAlias(config.tempQueueAlias()) - .connectionFactory(config.connectionFactory()) - .build(); - if (listener.getConcurrency() < 1) { - throw new MQInvalidListenerSetup("Invalid concurrency, it should be greater than 0"); - } - if (StringUtils.hasText(listener.getQueue()) && StringUtils.hasText(listener.getTempQueueAlias())) { - throw new MQInvalidListenerSetup("Invalid configuration, should define only one of value or tempQueueAlias"); - } - if (!StringUtils.hasText(listener.getQueue()) && !StringUtils.hasText(listener.getTempQueueAlias())) { - throw new MQInvalidListenerSetup("Invalid configuration, should define one of value or tempQueueAlias"); - } - return listener; - } - - @Override - public void setBeanFactory(BeanFactory beanFactory) throws BeansException { - if (beanFactory instanceof ConfigurableBeanFactory) { - this.embeddedValueResolver = new EmbeddedValueResolver((ConfigurableBeanFactory) beanFactory); - } - } -} diff --git a/src/main/resources/commons/mq-common/config/mq-listener-config.java.mustache b/src/main/resources/commons/mq-common/config/mq-listener-config.java.mustache deleted file mode 100644 index 252d3997..00000000 --- a/src/main/resources/commons/mq-common/config/mq-listener-config.java.mustache +++ /dev/null @@ -1,107 +0,0 @@ -package {{package}}.mq.common.config; - -{{#lombok}} -import lombok.Builder; -import lombok.Getter; - -@Builder -@Getter -{{/lombok}} -public class MQListenerConfig { - private final String queue; - private final int concurrency; - private final String connectionFactory; - private final String tempQueueAlias; - private final boolean async; - private final boolean mqmd; - {{^lombok}} - - MQListenerConfig(final String queue, final int concurrency, final String connectionFactory, final String tempQueueAlias, final boolean async, final boolean mqmd) { - this.queue = queue; - this.concurrency = concurrency; - this.connectionFactory = connectionFactory; - this.tempQueueAlias = tempQueueAlias; - this.async = async; - this.mqmd = mqmd; - } - - public static class MQListenerConfigBuilder { - private String queue; - private int concurrency; - private String connectionFactory; - private String tempQueueAlias; - private boolean async; - private boolean mqmd; - - MQListenerConfigBuilder() { - } - - public MQListenerConfig.MQListenerConfigBuilder queue(final String queue) { - this.queue = queue; - return this; - } - - public MQListenerConfig.MQListenerConfigBuilder concurrency(final int concurrency) { - this.concurrency = concurrency; - return this; - } - - public MQListenerConfig.MQListenerConfigBuilder connectionFactory(final String connectionFactory) { - this.connectionFactory = connectionFactory; - return this; - } - - public MQListenerConfig.MQListenerConfigBuilder tempQueueAlias(final String tempQueueAlias) { - this.tempQueueAlias = tempQueueAlias; - return this; - } - - public MQListenerConfig.MQListenerConfigBuilder async(final boolean async) { - this.async = async; - return this; - } - - public MQListenerConfig.MQListenerConfigBuilder mqmd(final boolean mqmd) { - this.mqmd = mqmd; - return this; - } - - public MQListenerConfig build() { - return new MQListenerConfig(this.queue, this.concurrency, this.connectionFactory, this.tempQueueAlias, this.async, this.mqmd); - } - - @Override - public String toString() { - return "MQListenerConfig.MQListenerConfigBuilder(queue=" + this.queue + ", concurrency=" + this.concurrency + ", connectionFactory=" + this.connectionFactory + ", tempQueueAlias=" + this.tempQueueAlias + ", async=" + this.async + ", mqmd=" + this.mqmd + ")"; - } - } - - public static MQListenerConfig.MQListenerConfigBuilder builder() { - return new MQListenerConfig.MQListenerConfigBuilder(); - } - - public String getQueue() { - return this.queue; - } - - public int getConcurrency() { - return this.concurrency; - } - - public String getConnectionFactory() { - return this.connectionFactory; - } - - public String getTempQueueAlias() { - return this.tempQueueAlias; - } - - public boolean isAsync() { - return this.async; - } - - public boolean isMqmd() { - return this.mqmd; - } - {{/lombok}} -} diff --git a/src/main/resources/commons/mq-common/config/mq-sender-config.java.mustache b/src/main/resources/commons/mq-common/config/mq-sender-config.java.mustache deleted file mode 100644 index 274aede2..00000000 --- a/src/main/resources/commons/mq-common/config/mq-sender-config.java.mustache +++ /dev/null @@ -1,34 +0,0 @@ -package {{package}}.mq.common.config; - -import {{package}}.mq.common.api.MQDestinationProvider; -import {{package}}.mq.common.api.MQMessageSender; -import {{package}}.mq.common.context.MQMultiContextSender; -import {{package}}.mq.common.utils.MQQueueUtils; -import com.ibm.mq.jms.MQQueue; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import javax.jms.ConnectionFactory; - -@Configuration -public class MQSenderConfig { - - @Bean - @ConditionalOnMissingBean(MQMessageSender.class) - public MQMessageSender defaultMQMessageSender(ConnectionFactory cf, - MQDestinationProvider provider, - @Value("${ibm.output-concurrency}") int concurrency) { - return new MQMultiContextSender(cf, concurrency, provider); - } - - @Bean - @ConditionalOnMissingBean(MQDestinationProvider.class) - public MQDestinationProvider defaultDestinationProvider(@Value("${ibm.output-queue}") String outputQueue) { - return context -> { - MQQueue queue = (MQQueue) context.createQueue(outputQueue); - return MQQueueUtils.setProperties(queue, MQListenerConfig.builder().mqmd(true).async(true).build()); - }; - } -} diff --git a/src/main/resources/commons/mq-common/config/mq-tmp-queues-container-imp.java.mustache b/src/main/resources/commons/mq-common/config/mq-tmp-queues-container-imp.java.mustache deleted file mode 100644 index 4862eda5..00000000 --- a/src/main/resources/commons/mq-common/config/mq-tmp-queues-container-imp.java.mustache +++ /dev/null @@ -1,21 +0,0 @@ -package {{package}}.mq.common.config; - -import {{package}}.mq.common.api.MQTemporaryQueuesContainer; -import org.springframework.stereotype.Component; - -import javax.jms.TemporaryQueue; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -@Component -public class MQTmpQueuesContainerImp implements MQTemporaryQueuesContainer { - private final Map tempQueues = new ConcurrentHashMap<>(); - - public void registerTemporaryQueue(String alias, TemporaryQueue queue) { - tempQueues.put(alias, queue); - } - - public TemporaryQueue get(String alias) { - return tempQueues.get(alias); - } -} diff --git a/src/main/resources/commons/mq-common/connection/mq-connection-listener.java.mustache b/src/main/resources/commons/mq-common/connection/mq-connection-listener.java.mustache deleted file mode 100644 index 7def74b0..00000000 --- a/src/main/resources/commons/mq-common/connection/mq-connection-listener.java.mustache +++ /dev/null @@ -1,74 +0,0 @@ -package {{package}}.mq.common.connection; - -{{#lombok}} -import lombok.AllArgsConstructor; -import lombok.Builder; -{{/lombok}} - -import javax.jms.*; - -{{#lombok}} -@Builder -@AllArgsConstructor -{{/lombok}} -public class MQConnectionListener implements Runnable { - private final Session session; - private final TemporaryQueue destination; - private final MessageListener listener; - - @Override - public void run() { - try { - session.createConsumer(destination)//NOSONAR - .setMessageListener(listener); - } catch (JMSException ex) { - throw new JMSRuntimeException(ex.getMessage(), ex.getErrorCode(), ex); - } - } - {{^lombok}} - - public static class MQConnectionListenerBuilder { - private Session session; - private TemporaryQueue destination; - private MessageListener listener; - - MQConnectionListenerBuilder() { - } - - public MQConnectionListener.MQConnectionListenerBuilder session(final Session session) { - this.session = session; - return this; - } - - public MQConnectionListener.MQConnectionListenerBuilder destination(final TemporaryQueue destination) { - this.destination = destination; - return this; - } - - public MQConnectionListener.MQConnectionListenerBuilder listener(final MessageListener listener) { - this.listener = listener; - return this; - } - - public MQConnectionListener build() { - return new MQConnectionListener(this.session, this.destination, this.listener); - } - - @Override - public String toString() { - return "MQConnectionListener.MQConnectionListenerBuilder(session=" + this.session + ", destination=" + this.destination + ", listener=" + this.listener + ")"; - } - } - - public static MQConnectionListener.MQConnectionListenerBuilder builder() { - return new MQConnectionListener.MQConnectionListenerBuilder(); - } - - public MQConnectionListener(final Session session, final TemporaryQueue destination, final MessageListener listener) { - this.session = session; - this.destination = destination; - this.listener = listener; - } - {{/lombok}} - -} diff --git a/src/main/resources/commons/mq-common/connection/mq-multi-connection-listener.java.mustache b/src/main/resources/commons/mq-common/connection/mq-multi-connection-listener.java.mustache deleted file mode 100644 index 48aa051d..00000000 --- a/src/main/resources/commons/mq-common/connection/mq-multi-connection-listener.java.mustache +++ /dev/null @@ -1,123 +0,0 @@ -package {{package}}.mq.common.connection; - -import {{package}}.mq.common.MQReactiveMessageListener; -import {{package}}.mq.common.api.MQTemporaryQueuesContainer; -import {{package}}.mq.common.config.MQListenerConfig; -import {{package}}.mq.common.utils.MQQueueUtils; -{{#lombok}} -import lombok.Builder; -import lombok.Getter; -import lombok.extern.log4j.Log4j2; -{{/lombok}} -{{^lombok}} -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -{{/lombok}} - -import javax.jms.*; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -{{#lombok}} -@Builder -@Log4j2 -{{/lombok}} -public class MQMultiConnectionListener { - {{^lombok}} - private static final Logger log = LogManager.getLogger(MQMultiConnectionListener.class); - {{/lombok}} - {{#lombok}} - @Getter - {{/lombok}} - private final String name; - private final ConnectionFactory connectionFactory; - private final MQReactiveMessageListener listener; - private final MQTemporaryQueuesContainer container; - private final MQListenerConfig config; - - public void start() { - ExecutorService service = Executors.newFixedThreadPool(config.getConcurrency()); - try { - Connection connection = connectionFactory.createConnection();//NOSONAR - TemporaryQueue destination = MQQueueUtils.setupTemporaryQueue(connection.createSession(), config); - container.registerTemporaryQueue(config.getTempQueueAlias(), destination); - for (int i = 0; i < config.getConcurrency(); i++) { - service.submit(MQConnectionListener.builder() - .session(connection.createSession()) - .destination(destination) - .listener(listener) - .build()); - } - connection.start(); - if (log.isInfoEnabled()) { - log.info("{} listeners created for {}", config.getConcurrency(), destination.getQueueName()); - } - } catch (JMSException ex) { - throw new JMSRuntimeException(ex.getMessage(), ex.getErrorCode(), ex); - } - } - {{^lombok}} - - MQMultiConnectionListener(final String name, final ConnectionFactory connectionFactory, final MQReactiveMessageListener listener, final MQTemporaryQueuesContainer container, final MQListenerConfig config) { - this.name = name; - this.connectionFactory = connectionFactory; - this.listener = listener; - this.container = container; - this.config = config; - } - - public static class MQMultiConnectionListenerBuilder { - private String name; - private ConnectionFactory connectionFactory; - private MQReactiveMessageListener listener; - private MQTemporaryQueuesContainer container; - private MQListenerConfig config; - - - MQMultiConnectionListenerBuilder() { - } - - public MQMultiConnectionListener.MQMultiConnectionListenerBuilder name(final String name) { - this.name = name; - return this; - } - - public MQMultiConnectionListener.MQMultiConnectionListenerBuilder connectionFactory(final ConnectionFactory connectionFactory) { - this.connectionFactory = connectionFactory; - return this; - } - - public MQMultiConnectionListener.MQMultiConnectionListenerBuilder listener(final MQReactiveMessageListener listener) { - this.listener = listener; - return this; - } - - public MQMultiConnectionListener.MQMultiConnectionListenerBuilder container(final MQTemporaryQueuesContainer container) { - this.container = container; - return this; - } - - public MQMultiConnectionListener.MQMultiConnectionListenerBuilder config(final MQListenerConfig config) { - this.config = config; - return this; - } - - public MQMultiConnectionListener build() { - return new MQMultiConnectionListener(this.name, this.connectionFactory, this.listener, this.container, this.config); - } - - @Override - public String toString() { - return "MQMultiConnectionListener.MQMultiConnectionListenerBuilder(name=" + this.name + ", connectionFactory=" + this.connectionFactory + ", listener=" + this.listener + ", container=" + this.container + ", config=" + this.config + ")"; - } - } - - public static MQMultiConnectionListener.MQMultiConnectionListenerBuilder builder() { - return new MQMultiConnectionListener.MQMultiConnectionListenerBuilder(); - } - - public String getName() { - return this.name; - } - {{/lombok}} -} diff --git a/src/main/resources/commons/mq-common/context/mq-context-listener.java.mustache b/src/main/resources/commons/mq-common/context/mq-context-listener.java.mustache deleted file mode 100644 index 150fce76..00000000 --- a/src/main/resources/commons/mq-common/context/mq-context-listener.java.mustache +++ /dev/null @@ -1,90 +0,0 @@ -package {{package}}.mq.common.context; - -import {{package}}.mq.common.MQReactiveMessageListener; -import {{package}}.mq.common.config.MQListenerConfig; -import {{package}}.mq.common.utils.MQQueueUtils; -{{#lombok}} -import lombok.Builder; -import lombok.Getter; -{{/lombok}} - -import javax.jms.ConnectionFactory; -import javax.jms.Destination; -import javax.jms.JMSConsumer; -import javax.jms.JMSContext; - -{{#lombok}} -@Builder -{{/lombok}} -public class MQContextListener implements Runnable { - {{#lombok}} - @Getter - {{/lombok}} - private final String name; - private final ConnectionFactory connectionFactory; - private final MQReactiveMessageListener listener; - private final MQListenerConfig config; - - @Override - public void run() { - JMSContext context = connectionFactory.createContext(); - Destination destination = MQQueueUtils.setupFixedQueue(context, config); - JMSConsumer consumer = context.createConsumer(destination);//NOSONAR - consumer.setMessageListener(listener); - } - {{^lombok}} - - MQContextListener(final String name, final ConnectionFactory connectionFactory, final MQReactiveMessageListener listener, final MQListenerConfig config) { - this.name = name; - this.connectionFactory = connectionFactory; - this.listener = listener; - this.config = config; - } - - public static class MQContextListenerBuilder { - private String name; - private ConnectionFactory connectionFactory; - private MQReactiveMessageListener listener; - private MQListenerConfig config; - - MQContextListenerBuilder() { - } - - public MQContextListener.MQContextListenerBuilder name(final String name) { - this.name = name; - return this; - } - - public MQContextListener.MQContextListenerBuilder connectionFactory(final ConnectionFactory connectionFactory) { - this.connectionFactory = connectionFactory; - return this; - } - - public MQContextListener.MQContextListenerBuilder listener(final MQReactiveMessageListener listener) { - this.listener = listener; - return this; - } - - public MQContextListener.MQContextListenerBuilder config(final MQListenerConfig config) { - this.config = config; - return this; - } - - public MQContextListener build() { - return new MQContextListener(this.name, this.connectionFactory, this.listener, this.config); - } - - public String toString() { - return "MQContextListener.MQContextListenerBuilder(name=" + this.name + ", connectionFactory=" + this.connectionFactory + ", listener=" + this.listener + ", config=" + this.config + ")"; - } - } - - public static MQContextListener.MQContextListenerBuilder builder() { - return new MQContextListener.MQContextListenerBuilder(); - } - - public String getName() { - return this.name; - } - {{/lombok}} -} diff --git a/src/main/resources/commons/mq-common/context/mq-context-sender.java.mustache b/src/main/resources/commons/mq-common/context/mq-context-sender.java.mustache deleted file mode 100644 index 19d37a7a..00000000 --- a/src/main/resources/commons/mq-common/context/mq-context-sender.java.mustache +++ /dev/null @@ -1,40 +0,0 @@ -package {{package}}.mq.common.context; - -import {{package}}.mq.common.api.MQDestinationProvider; -import {{package}}.mq.common.api.MQMessageSender; -import {{package}}.mq.common.api.MQMessageCreator; -import reactor.core.publisher.Mono; -import reactor.core.scheduler.Schedulers; - -import javax.jms.*; - -public class MQContextSender implements MQMessageSender { - private final JMSContext context; - private final JMSProducer producer; - private final Destination defaultDestination; - - public MQContextSender(JMSContext context, MQDestinationProvider provider) { - this.context = context; - this.producer = context.createProducer(); - this.defaultDestination = provider.create(context); - } - - @Override - public Mono send(MQMessageCreator messageCreator) { - return send(defaultDestination, messageCreator); - } - - @Override - public Mono send(Destination destination, MQMessageCreator messageCreator) { - return Mono.defer(() -> { - try { - Message message = messageCreator.create(context); - producer.send(destination, message); - return Mono.just(message.getJMSMessageID()); - } catch (JMSException e) { - e.printStackTrace(); - return Mono.error(e); - } - }).subscribeOn(Schedulers.boundedElastic()); - } -} diff --git a/src/main/resources/commons/mq-common/context/mq-multi-context-sender.java.mustache b/src/main/resources/commons/mq-common/context/mq-multi-context-sender.java.mustache deleted file mode 100644 index b1468b9e..00000000 --- a/src/main/resources/commons/mq-common/context/mq-multi-context-sender.java.mustache +++ /dev/null @@ -1,44 +0,0 @@ -package {{package}}.mq.common.context; - -import {{package}}.mq.common.api.MQDestinationProvider; -import {{package}}.mq.common.api.MQMessageSender; -import {{package}}.mq.common.api.MQMessageCreator; -import reactor.core.publisher.Mono; - -import javax.jms.ConnectionFactory; -import javax.jms.Destination; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -public class MQMultiContextSender implements MQMessageSender { - private final ConnectionFactory connectionFactory; - private List adapterList; - private final int connections; - private final MQDestinationProvider provider; - - public MQMultiContextSender(ConnectionFactory connectionFactory, int connections, MQDestinationProvider provider) { - this.connectionFactory = connectionFactory; - this.connections = connections; - this.provider = provider; - start(); - } - - public void start() { - adapterList = IntStream.range(0, connections) - .mapToObj(idx -> new MQContextSender(connectionFactory.createContext(), provider)) - .collect(Collectors.toList()); - } - - @Override - public Mono send(Destination destination, MQMessageCreator messageCreator) { - int selectIndex = (int) (System.currentTimeMillis() % connections); - return adapterList.get(selectIndex).send(destination, messageCreator); - } - - @Override - public Mono send(MQMessageCreator messageCreator) { - int selectIndex = (int) (System.currentTimeMillis() % connections); - return adapterList.get(selectIndex).send(messageCreator); - } -} diff --git a/src/main/resources/commons/mq-common/definition.json b/src/main/resources/commons/mq-common/definition.json deleted file mode 100644 index 64284d18..00000000 --- a/src/main/resources/commons/mq-common/definition.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "folders": [ - "infrastructure/helpers/mq-common/src/test/java/{{packagePath}}/mq/common" - ], - "files": { - "commons/mq-common/mq-reactive-message-listener.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/MQReactiveMessageListener.java", - "commons/mq-common/mq-listener.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/MQListener.java", - "commons/mq-common/mq-listeners.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/MQListeners.java", - "commons/mq-common/utils/mq-queue-utils.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/utils/MQQueueUtils.java", - "commons/mq-common/utils/mq-message-listener-utils.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/utils/MQMessageListenerUtils.java", - "commons/mq-common/context/mq-multi-context-sender.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/context/MQMultiContextSender.java", - "commons/mq-common/context/mq-context-sender.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/context/MQContextSender.java", - "commons/mq-common/context/mq-context-listener.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/context/MQContextListener.java", - "commons/mq-common/connection/mq-multi-connection-listener.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/connection/MQMultiConnectionListener.java", - "commons/mq-common/connection/mq-connection-listener.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/connection/MQConnectionListener.java", - "commons/mq-common/config/mq-tmp-queues-container-imp.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/config/MQTmpQueuesContainerImp.java", - "commons/mq-common/config/mq-sender-config.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/config/MQSenderConfig.java", - "commons/mq-common/config/mq-listener-config.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/config/MQListenerConfig.java", - "commons/mq-common/config/mq-listener-annotation-processor.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/config/MQListenerAnnotationProcessor.java", - "commons/mq-common/config/exceptions/mq-invalid-listener-setup.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/config/exceptions/MQInvalidListenerSetup.java", - "commons/mq-common/api/mq-temporary-queues-container.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/api/MQTemporaryQueuesContainer.java", - "commons/mq-common/api/mq-message-sender.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/api/MQMessageSender.java", - "commons/mq-common/api/mq-message-creator.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/api/MQMessageCreator.java", - "commons/mq-common/api/mq-destination-provider.java.mustache": "infrastructure/helpers/mq-common/src/main/java/{{packagePath}}/mq/common/api/MQDestinationProvider.java", - "commons/mq-common/build.gradle.mustache": "infrastructure/helpers/mq-common/build.gradle" - } -} diff --git a/src/main/resources/commons/mq-common/mq-listener.java.mustache b/src/main/resources/commons/mq-common/mq-listener.java.mustache deleted file mode 100644 index 41717d6f..00000000 --- a/src/main/resources/commons/mq-common/mq-listener.java.mustache +++ /dev/null @@ -1,52 +0,0 @@ -package {{package}}.mq.common; - -import java.lang.annotation.*; - -@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Repeatable(MQListeners.class) -public @interface MQListener { - - /** - * Queue for listening - * - * @return Queue Name - */ - String value() default ""; - - /** - * @return Amount of connections to mq - */ - String concurrency() default "1"; - - /** - * Connection Factory for listening context - * - * @return bean name - * @default empty and uses available ConnectionFactory.class bean - */ - String connectionFactory() default ""; - - /** - * Alias to register a temporary queue in the MQContainer bean - * - * @return temporary queue alias - * @default empty and uses value() for listen a fixed queue - */ - String tempQueueAlias() default ""; - - /** - * Enables WMQ_PUT_ASYNC_ALLOWED_ENABLED and WMQ_READ_AHEAD_ALLOWED_ENABLED - * - * @return async enabled - */ - boolean async() default true; - - /** - * Enables WMQ_MQMD_READ_ENABLED and WMQ_MQMD_WRITE_ENABLED - * - * @return mqmd enabled - */ - boolean mqmd() default true; -} diff --git a/src/main/resources/commons/mq-common/mq-listeners.java.mustache b/src/main/resources/commons/mq-common/mq-listeners.java.mustache deleted file mode 100644 index dea9ecfe..00000000 --- a/src/main/resources/commons/mq-common/mq-listeners.java.mustache +++ /dev/null @@ -1,10 +0,0 @@ -package {{package}}.mq.common; - -import java.lang.annotation.*; - -@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface MQListeners { - MQListener[] value(); -} diff --git a/src/main/resources/commons/mq-common/mq-reactive-message-listener.java.mustache b/src/main/resources/commons/mq-common/mq-reactive-message-listener.java.mustache deleted file mode 100644 index bb7127b4..00000000 --- a/src/main/resources/commons/mq-common/mq-reactive-message-listener.java.mustache +++ /dev/null @@ -1,46 +0,0 @@ -package {{package}}.mq.common; - -{{#lombok}} -import lombok.AllArgsConstructor; -import lombok.Getter; -{{/lombok}} -import org.springframework.messaging.handler.invocation.reactive.InvocableHandlerMethod; -import reactor.core.publisher.Mono; -import reactor.core.scheduler.Schedulers; - -import javax.jms.Message; -import javax.jms.MessageListener; - -{{#lombok}} -@AllArgsConstructor -{{/lombok}} -public final class MQReactiveMessageListener implements MessageListener { - {{#lombok}} - @Getter - {{/lombok}} - private final String name; - private final InvocableHandlerMethod method; - - {{^lombok}} - public MQReactiveMessageListener(String name, InvocableHandlerMethod method) { - this.name = name; - this.method = method; - } - {{/lombok}} - - @Override - public void onMessage(Message message) { - Mono.defer(() -> process(message)) - .subscribeOn(Schedulers.boundedElastic()) - .subscribe(); - } - - protected Mono process(Message message) { - return method.invoke(null, message); - } - {{^lombok}} - public String getName() { - return name; - } - {{/lombok}} -} diff --git a/src/main/resources/commons/mq-common/utils/mq-message-listener-utils.java.mustache b/src/main/resources/commons/mq-common/utils/mq-message-listener-utils.java.mustache deleted file mode 100644 index 0ee3ad94..00000000 --- a/src/main/resources/commons/mq-common/utils/mq-message-listener-utils.java.mustache +++ /dev/null @@ -1,75 +0,0 @@ -package {{package}}.mq.common.utils; - -import {{package}}.mq.common.MQReactiveMessageListener; -import {{package}}.mq.common.api.MQTemporaryQueuesContainer; -import {{package}}.mq.common.config.MQListenerConfig; -import {{package}}.mq.common.connection.MQMultiConnectionListener; -import {{package}}.mq.common.context.MQContextListener; -{{#lombok}} -import lombok.extern.log4j.Log4j2; -{{/lombok}} -{{^lombok}} -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -{{/lombok}} -import org.springframework.util.StringUtils; - -import javax.jms.ConnectionFactory; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.stream.IntStream; - -{{#lombok}} -@Log4j2 -{{/lombok}} -public class MQMessageListenerUtils { - {{^lombok}} - private static final Logger log = LogManager.getLogger(MQMessageListenerUtils.class); - {{/lombok}} - - public static void createListeners(ConnectionFactory cf, - MQReactiveMessageListener listener, - MQTemporaryQueuesContainer container, - MQListenerConfig config) { - if (log.isInfoEnabled()) { - log.info("Creating {} listeners", config.getConcurrency()); - } - if (StringUtils.hasText(config.getTempQueueAlias())) { - createListenersTemp(cf, listener, container, config); - } else { - createListenersFixed(cf, listener, config); - } - } - - public static void createListenersFixed(ConnectionFactory cf, - MQReactiveMessageListener listener, - MQListenerConfig config) { - ExecutorService service = Executors.newFixedThreadPool(config.getConcurrency()); - IntStream.range(0, config.getConcurrency()) - .mapToObj(number -> MQContextListener.builder() - .name(listener.getName() + "-" + number) - .connectionFactory(cf) - .config(config) - .listener(listener) - .build()) - .forEach(service::submit); - if (log.isInfoEnabled()) { - log.info("{} listeners created for {}", config.getConcurrency(), config.getQueue()); - } - } - - public static void createListenersTemp(ConnectionFactory cf, - MQReactiveMessageListener listener, - MQTemporaryQueuesContainer container, - MQListenerConfig config) { - MQMultiConnectionListener.builder() - .name(listener.getName()) - .connectionFactory(cf) - .config(config) - .listener(listener) - .container(container) - .build() - .start(); - } - -} diff --git a/src/main/resources/commons/mq-common/utils/mq-queue-utils.java.mustache b/src/main/resources/commons/mq-common/utils/mq-queue-utils.java.mustache deleted file mode 100644 index 5f822092..00000000 --- a/src/main/resources/commons/mq-common/utils/mq-queue-utils.java.mustache +++ /dev/null @@ -1,40 +0,0 @@ -package {{package}}.mq.common.utils; - -import {{package}}.mq.common.config.MQListenerConfig; -import com.ibm.mq.jms.MQQueue; - -import javax.jms.*; - -import static com.ibm.msg.client.wmq.common.CommonConstants.*; - -public class MQQueueUtils { - - public static Destination setupFixedQueue(JMSContext context, MQListenerConfig config) { - return setProperties((MQQueue) context.createQueue(config.getQueue()), config); - } - - public static TemporaryQueue setupTemporaryQueue(Session session, MQListenerConfig config) { - try { - return (TemporaryQueue) setProperties((MQQueue) session.createTemporaryQueue(), config); - } catch (JMSException ex) { - throw new JMSRuntimeException(ex.getMessage(), ex.getErrorCode(), ex); - } - } - - public static Destination setProperties(MQQueue queue, MQListenerConfig config) { - try { - queue.setProperty(WMQ_TARGET_CLIENT, "1"); - if (config.isMqmd()) { - queue.setProperty(WMQ_MQMD_READ_ENABLED, "true"); - queue.setProperty(WMQ_MQMD_WRITE_ENABLED, "true"); - } - if (config.isAsync()) { - queue.setPutAsyncAllowed(WMQ_PUT_ASYNC_ALLOWED_ENABLED); - queue.setReadAheadAllowed(WMQ_READ_AHEAD_ALLOWED_ENABLED); - } - return queue; - } catch (JMSException ex) { - throw new JMSRuntimeException(ex.getMessage(), ex.getErrorCode(), ex); - } - } -} diff --git a/src/main/resources/driven-adapter/mq-sender/build.gradle.mustache b/src/main/resources/driven-adapter/mq-sender/build.gradle.mustache index 4cea6c20..8f9abee6 100644 --- a/src/main/resources/driven-adapter/mq-sender/build.gradle.mustache +++ b/src/main/resources/driven-adapter/mq-sender/build.gradle.mustache @@ -1,5 +1,5 @@ dependencies { compile project(':model') - compile project(':mq-common') + compile 'com.github.bancolombia:commons-jms-mq:{{commonsJmsVersion}}' compile 'org.springframework:spring-context' } diff --git a/src/main/resources/driven-adapter/mq-sender/sample-mq-message-sender.java.mustache b/src/main/resources/driven-adapter/mq-sender/sample-mq-message-sender.java.mustache index 998d3071..f9189da9 100644 --- a/src/main/resources/driven-adapter/mq-sender/sample-mq-message-sender.java.mustache +++ b/src/main/resources/driven-adapter/mq-sender/sample-mq-message-sender.java.mustache @@ -1,18 +1,23 @@ package {{package}}.mq.sender; -import {{package}}.mq.common.api.MQMessageSender; +import co.com.bancolombia.commons.jms.api.MQMessageSender; +import co.com.bancolombia.commons.jms.mq.EnableMQMessageSender; {{#lombok}} import lombok.AllArgsConstructor; {{/lombok}} import org.springframework.stereotype.Component; import reactor.core.publisher.Mono; +import javax.jms.Message; + @Component {{#lombok}} @AllArgsConstructor {{/lombok}} +@EnableMQMessageSender public class SampleMQMessageSender /* implements SomeGateway */ { private final MQMessageSender sender; +// private final MQTemporaryQueuesContainer container; // Inject it to reference a temporary queue {{^lombok}} public MyMessageSender(MQMessageSender sender) { @@ -21,6 +26,10 @@ public class SampleMQMessageSender /* implements SomeGateway */ { {{/lombok}} public Mono send(String message) { - return sender.send(context -> context.createTextMessage(message)); + return sender.send(context -> { + Message textMessage = context.createTextMessage(message); +// textMessage.setJMSReplyTo(container.get("any-custom-value")); // Inject the reply to queue from container + return textMessage; + }); } } diff --git a/src/main/resources/entry-point/mq-listener/build.gradle.mustache b/src/main/resources/entry-point/mq-listener/build.gradle.mustache index 40b5bf29..aaf8a87b 100644 --- a/src/main/resources/entry-point/mq-listener/build.gradle.mustache +++ b/src/main/resources/entry-point/mq-listener/build.gradle.mustache @@ -1,6 +1,6 @@ dependencies { compile project(':model') compile project(':usecase') - compile project(':mq-common') + compile 'com.github.bancolombia:commons-jms-mq:{{commonsJmsVersion}}' compile 'org.springframework:spring-context' } diff --git a/src/main/resources/entry-point/mq-listener/sample-mq-message-listener.java.mustache b/src/main/resources/entry-point/mq-listener/sample-mq-message-listener.java.mustache index a8a2daa3..3cc3a4ef 100644 --- a/src/main/resources/entry-point/mq-listener/sample-mq-message-listener.java.mustache +++ b/src/main/resources/entry-point/mq-listener/sample-mq-message-listener.java.mustache @@ -1,6 +1,6 @@ package {{package}}.mq.listener; -import {{package}}.mq.common.MQListener; +import co.com.bancolombia.commons.jms.mq.MQListener; {{#lombok}} import lombok.AllArgsConstructor; {{/lombok}} @@ -25,7 +25,7 @@ public class SampleMQMessageListener { {{/lombok}} // For fixed queues - @MQListener(value = "${ibm.input-queue}", concurrency = "${ibm.input-concurrency}") + @MQListener public Mono process(Message message) throws JMSException { String text = ((TextMessage) message).getText(); // return useCase.sample(text); @@ -33,10 +33,10 @@ public class SampleMQMessageListener { } // For an automatic generated temporary queue - @MQListener(tempQueueAlias = "any-custom-value", concurrency = "${ibm.input-concurrency}") - public Mono processFromTemporaryQueue(Message message) throws JMSException { - String text = ((TextMessage) message).getText(); - // return useCase.sample(text); - return Mono.empty(); - } + // @MQListener(tempQueueAlias = "any-custom-value") + // public Mono processFromTemporaryQueue(Message message) throws JMSException { + // String text = ((TextMessage) message).getText(); + // // return useCase.sample(text); + // return Mono.empty(); + // } } diff --git a/src/test/java/co/com/bancolombia/task/GenerateDrivenAdapterTaskTest.java b/src/test/java/co/com/bancolombia/task/GenerateDrivenAdapterTaskTest.java index 277b4c4c..3e249539 100644 --- a/src/test/java/co/com/bancolombia/task/GenerateDrivenAdapterTaskTest.java +++ b/src/test/java/co/com/bancolombia/task/GenerateDrivenAdapterTaskTest.java @@ -631,15 +631,6 @@ public void generateMQSender() throws IOException, CleanException { new File( "build/unitTest/infrastructure/driven-adapters/mq-sender/src/main/java/co/com/bancolombia/mq/sender/SampleMQMessageSender.java") .exists()); - assertTrue(new File("build/unitTest/infrastructure/helpers/mq-common/build.gradle").exists()); - assertTrue( - new File( - "build/unitTest/infrastructure/helpers/mq-common/src/main/java/co/com/bancolombia/mq/common/MQReactiveMessageListener.java") - .exists()); - assertTrue( - new File( - "build/unitTest/infrastructure/helpers/mq-common/src/main/java/co/com/bancolombia/mq/common/api/MQMessageSender.java") - .exists()); } private void writeString(File file, String string) throws IOException { diff --git a/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskTest.java b/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskTest.java index 58b77f82..38326d7e 100644 --- a/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskTest.java +++ b/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskTest.java @@ -385,15 +385,6 @@ public void generateEntryPointMQListener() throws IOException, CleanException { new File( "build/unitTest/infrastructure/entry-points/mq-listener/src/main/java/co/com/bancolombia/mq/listener/SampleMQMessageListener.java") .exists()); - assertTrue(new File("build/unitTest/infrastructure/helpers/mq-common/build.gradle").exists()); - assertTrue( - new File( - "build/unitTest/infrastructure/helpers/mq-common/src/main/java/co/com/bancolombia/mq/common/MQReactiveMessageListener.java") - .exists()); - assertTrue( - new File( - "build/unitTest/infrastructure/helpers/mq-common/src/main/java/co/com/bancolombia/mq/common/api/MQMessageSender.java") - .exists()); } @Test