Как настроить несколько очередей утешения при весенней загрузке - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь настроить несколько очередей SOLACE в моем приложении для весенней загрузки, используя следующий код:

@Configuration
public class JmsConfig {

@Bean(name="queue1")
@Primary
@ConfigurationProperties(prefix="spring.jta.bitronix.connectionfactory.queue1"
public ConnectionFactory queue1ConnectionFactory() {
    return new PoolingConnectionFactoryBean();
}

@Bean(name="queue2")
@ConfigurationProperties(prefix="spring.jta.bitronix.connectionfactory.queue2")
public ConnectionFactory queue2ConnectionFactory() {
    return new PoolingConnectionFactoryBean();
}

}

Вот способ, которым я пытаюсь дать свойства:

spring.jta.bitronix.connectionfactory.queue1.class-name=com.solacesystems.jms.SolXAConnectionFactoryImpl
spring.jta.bitronix.connectionfactory.queue1.driverProperties.host=<<hostURL1>>
spring.jta.bitronix.connectionfactory.queue1.driverProperties.VPN=<<VPN1>>
spring.jta.bitronix.connectionfactory.queue1.driverProperties.authentication-scheme=AUTHENTICATION_SCHEME_GSS_KRB
spring.jta.bitronix.connectionfactory.queue1.driverProperties.KRBServiceName=HOST


spring.jta.bitronix.connectionfactory.queue2.class-name=com.solacesystems.jms.SolXAConnectionFactoryImpl
spring.jta.bitronix.connectionfactory.queue2.driverProperties.host=<<hostURL2>>
spring.jta.bitronix.connectionfactory.queue2.driverProperties.VPN=<<VPN2>>
spring.jta.bitronix.connectionfactory.queue2.driverProperties.authentication-scheme=AUTHENTICATION_SCHEME_GSS_KRB
spring.jta.bitronix.connectionfactory.queue2.driverProperties.KRBServiceName=HOST

Сборка maven становится успешной, но у меня возникают проблемы при развертывании кода в облаке apaas. Ниже приведено исключение:

o.s.boot.SpringApplication: сбой запуска приложения

org.springframework.context.ApplicationContextException: невозможно запустить веб-сервер; вложенное исключение org.springframework.boot.web.server.WebServerException: невозможно начать встроенный Tomcat в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh (ServletWebServerApplicationContext.java:157) в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:540) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java:142) в org.springframework.boot.SpringApplication.refresh (SpringApplication.java:775) в org.springframework.boot.SpringApplication.refreshContext (SpringApplication.java:397) в org.springframework.boot.SpringApplication.run (SpringApplication.java:316) в org.springframework.boot.SpringApplication.run (SpringApplication.java:1260) в org.springframework.boot.SpringApplication.run (SpringApplication.java:1248) в com.barclays.magics.slam.MagSlamApplication.main (MagSlamApplication.java:25) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.springframework.boot.loader.MainMethodRunner.run (MainMethodRunner.java:48) на org.springframework.boot.loader.Launcher.launch (Launcher.java:87) на org.springframework.boot.loader.Launcher.launch (Launcher.java:50) в org.springframework.boot.loader.JarLauncher.main (JarLauncher.java:51) Вызывается: org.springframework.boot.web.server.WebServerException: Невозможно запустить встроенный Tomcat в org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize (TomcatWebServer.java:125) в org.springframework.boot.web.embedded.tomcat.TomcatWebServer. (TomcatWebServer.java:86) в org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer (TomcatServletWebServerFactory.java:414) в org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer (TomcatServletWebServerFactory.java:174) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer (ServletWebServerApplicationContext.java:181) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh (ServletWebServerApplicationContext.java:154) ... 16 общих кадров опущены org.springframework.beans.factory.BeanCreationException: ошибка создание компонента с именем 'servletEndpointRegistrar', определенного в классе ресурс пути [Орг / springframework / загрузки / срабатывают / Автоконфигурирование / конечная точка / веб / ServletEndpointManagementContextConfiguration $ WebMvcServletEndpointManagementContextConfiguration.class]: Не удалось создать экземпляр объекта с помощью фабричного метода; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось иллюстрировать примерами [Org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Фабричный метод 'servletEndpointRegistrar' вызвал исключение; вложенными исключение org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании компонента с именем 'healthEndpoint', определенным в пути к классу ресурс [Орг / springframework / загрузки / срабатывают / Автоконфигурирование / здоровье / HealthEndpointConfiguration.class]:Неудовлетворенная зависимость выражается с помощью метода «healthEndpoint» параметр 1; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание бина с именем 'healthIndicatorRegistry', определенного в классе ресурс пути [Орг / springframework / загрузки / срабатывают / Автоконфигурирование / здоровье / HealthIndicatorAutoConfiguration.class]: Не удалось создать экземпляр объекта с помощью фабричного метода; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось иллюстрировать примерами [Org.springframework.boot.actuate.health.HealthIndicatorRegistry]: Фабричный метод «HealthIndicatorRegistry» выбросил исключение; вложенными Исключением является org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'Org.springframework.boot.actuate.autoconfigure.jms.JmsHealthIndicatorAutoConfiguration': Не удалось создать экземпляр объекта через конструктор; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось иллюстрировать примерами [Org.springframework.boot.actuate.autoconfigure.jms.JmsHealthIndicatorAutoConfiguration $$ EnhancerBySpringCGLIB $$ 13434908]: Конструктор бросил исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание бина с именем queue1ConnectionFactory, определенного в классе ресурс пути [JmsConfig.class]: сбой вызова метода init; вложенное исключение bitronix.tm.resource.ResourceConfigurationException: не может создать JMS фабрика соединений с именем queue1ConnectionFactory в org.springframework.beans.factory.support.ConstructorResolver.instantiate (ConstructorResolver.java:627) в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:607) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:1288) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:1127) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:538) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:498) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory.java:320) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:318) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:204) в org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType (ServletContextInitializerBeans.java:235) в org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType (ServletContextInitializerBeans.java:226) в org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans (ServletContextInitializerBeans.java:101) в org.springframework.boot.web.servlet.ServletContextInitializerBeans. (ServletContextInitializerBeans.java:88) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getServletContextInitializerBeans (ServletWebServerApplicationContext.java:261) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.selfInitialize (ServletWebServerApplicationContext.java:234) в org.springframework.boot.web.embedded.tomcat.TomcatStarter.onStartup (TomcatStarter.java:54) в org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5098) в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:183) вorg.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1432) в org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1422) в java.util.concurrent.FutureTask.выполнить (FutureTask.java:266) в org.apache.tomcat.util.threads.InlineExecutorService.execute (InlineExecutorService.java:75) в java.util.concurrent.AbstractExecutorService.submit (AbstractExecutorService.javag1: 34).catalina.core.ContainerBase.startInternal (ContainerBase.java:944) в org.apache.catalina.core.StandardHost.startInternal (StandardHost.java:831) в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java).: 183) в org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1432) в org.apache.catalina.core.ContainerBase $ StartChild.call (ContainerBase.java:1422) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в org.apache.tomcat.util.threads.InlineExecutorService.execute (InlineExecutorService.java:75) в java.util.concurrent.AbstractExecutorService.submit (AbstractExecutorService.java:134) в org.apache.catalina.core.ContainerBase.startInternal (ContainerBase.java:944) в org.apache.catalina.core.StandardEngine.startInternal (StandardEngine.java:261) или.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:183) в org.apache.catalina.core.StandardService.startInternal (StandardService.java:422) в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java: 183) в org.apache.catalina.core.StandardServer.startInternal (StandardServer.java:801) в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:183) в org.apache.catalina.startup.Tomcat.start (Tomcat.java:372) в org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize (TomcatWebServer.java:106) ... 21 опущенных общих фреймов. Причины: org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: метод фабрики 'servletEndpointRegistrar' вызвал исключение;вложенное исключение: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'healthEndpoint', определенного в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / health / HealthEndpointConfiguration.class]: неудовлетворенная зависимость, выраженная методом 'healthEndpoint 'параметр 1;вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'healthIndicatorRegistry', определенным в ресурсе пути к классу [org / springframework / boot / activate / autoconfigure / health / HealthIndicatorAutoConfiguration.class]: метод экземпляра компонента не был обработан с помощью фабрики;вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.health.HealthIndicatorRegistry]: фабричный метод 'healthIndicatorRegistry' вызвал исключение;вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем org.springframework.boot.actuate.autoconfigure.jms.JmsHealthIndicatorAutoConfiguration ': не удалось создать экземпляр компонента с помощью конструктора;вложенное исключение - org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [org.springframework.boot.actuate.autoconfigure.jms.JmsHealthIndicatorAutoConfiguration $$ EnhancerBySpringCGLIB $$вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'queue1ConnectionFactory', определенного в ресурсе пути к классу [JmsConfig.class]: сбой вызова метода init;вложенное исключение - bitronix.tm.resource.ResourceConfigurationException: невозможно создать фабрику соединений JMS с именем queue1ConnectionFactory вorg.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:185) в org.springframework.beans.factory.support.ConstructorResolver.instantiate (ConstructorResolver.java:622) ... 61 типичные кадры опущены org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании компонента с именем 'healthEndpoint', определенным в пути к классу ресурс [Орг / springframework / загрузки / срабатывает / Автоконфигурирование / здоровье / HealthEndpointConfiguration.class]: Неудовлетворенная зависимость выражается с помощью метода «healthEndpoint» параметр 1; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание бина с именем 'healthIndicatorRegistry', определенного в классе ресурс пути [Орг / springframework / загрузки / срабатывают / Автоконфигурирование / здоровье / HealthIndicatorAutoConfiguration.class]: Не удалось создать экземпляр объекта с помощью фабричного метода; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось иллюстрировать примерами [Org.springframework.boot.actuate.health.HealthIndicatorRegistry]: Фабричный метод «HealthIndicatorRegistry» выбросил исключение; вложенными Исключением является org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'Org.springframework.boot.actuate.autoconfigure.jms.JmsHealthIndicatorAutoConfiguration': Не удалось создать экземпляр объекта через конструктор; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось иллюстрировать примерами [Org.springframework.boot.actuate.autoconfigure.jms.JmsHealthIndicatorAutoConfiguration $$ EnhancerBySpringCGLIB $$ 13434908]: Конструктор бросил исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание бина с именем queue1ConnectionFactory, определенного в классе ресурс пути [JmsConfig.class]: сбой вызова метода init; вложенное исключение bitronix.tm.resource.ResourceConfigurationException: не может создать JMS фабрика соединений с именем queue1ConnectionFactory в org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray (ConstructorResolver.java:769) в org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod (ConstructorResolver.java:509) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod (AbstractAutowireCapableBeanFactory.java:1288) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:1127) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:538) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory.java:498) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda $ doGetBean $ 0 (AbstractBeanFactory.java:320) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:318) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:199) в org.springframework.context.support.AbstractApplicationContext.getBean (AbstractApplicationContext.java:1083) в org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.createEndpointBean (EndpointDiscoverer.java:149) в org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.createEndpointBeans (EndpointDiscoverer.java:136) в org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.discoverEndpoints (EndpointDiscoverer.java:125) в org.springframework.boot.actuate.endpoint.annotation.EndpointDiscoverer.getEndpoints (EndpointDiscoverer.java:119) вorg.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration $ WebMvcServletEndpointManagementContextConfiguration.servletEndpointRegistrar (ServletEndpointManagementContextConfiguration.java:76) в org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration $ WebMvcServletEndpointManagementContextConfiguration $$ EnhancerBySpringCGLIB $$ e38d5663.CGLIB $ servletEndpointRegistrar $ 0 () в org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration $ WebMvcServletEndpointManagementContextConfiguration $$ EnhancerBySpringCGLIB $$ e38d5663 $$ FastClassBySpringCGLIB $$ e4f06b7b.invoke () в org.springframework.cglib.proxy.MethodProxy.invokeSuper (MethodProxy.java:244) в org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept (ConfigurationClassEnhancer.java:363) в org.springframework.boot.actuate.autoconfigure.endpoint.web.ServletEndpointManagementContextConfiguration $ WebMvcServletEndpointManagementContextConfiguration $$ EnhancerBySpringCGLIB $$ e38d5663.servletEndpointRegistrar () в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:154) ... 62 общих кадра опущены org.springframework.beans.factory.BeanCreationException: ошибка создание бина с именем 'healthIndicatorRegistry', определенного в классе ресурс пути [Орг / springframework / загрузки / срабатывают / Автоконфигурирование / здоровье / HealthIndicatorAutoConfiguration.class]: Не удалось создать экземпляр объекта с помощью фабричного метода; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось иллюстрировать примерами [Org.springframework.boot.actuate.health.HealthIndicatorRegistry]: Фабричный метод «HealthIndicatorRegistry» выбросил исключение; вложенными Исключением является org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'Org.springframework.boot.actuate.autoconfigure.jms.JmsHealthIndicatorAutoConfiguration': Не удалось создать экземпляр объекта через конструктор; вложенное исключение org.springframework.beans.BeanInstantiationException: не удалось иллюстрировать примерами [Org.springframework.boot.actuate.autoconfigure.jms.JmsHealthIndicatorAutoConfiguration $$ EnhancerBySpringCGLIB $$ 13434908]: Конструктор бросил исключение; вложенное исключение org.springframework.beans.factory.BeanCreationException: ошибка создание бина с именем queue1ConnectionFactory, определенного в классе ресурс пути [JmsConfig.class]: сбой вызова метода init; вложенный

Любые указатели будут очень полезны

1 Ответ

0 голосов
/ 18 июня 2019

Если ваша цель - отправить несколько очередей на одном и том же брокере, вам не нужно указывать несколько фабрик соединений.Solace поддерживает Spring Autoconfig для JMS, поэтому вы можете автоматически подключить JmsTemplate и затем использовать метод convertAndSend для отправки сообщения в разные очереди.

В этом примере показана отправка в одну очередь, но каждый раз, когда вы вызываете convertAndSend , вы можете использовать в качестве имени очереди другую строку.https://github.com/Mrc0113/solace-samples-spring/blob/master/spring-boot-autoconfig-sender/src/main/java/com/solace/samples/spring/boot/SpringBootSender.java

Обратите внимание, что этот код не создает очередь, поэтому он должен уже существовать в посреднике.

...