Creating temporary JMS jms topic in Spring

后端 未结 2 1226
傲寒
傲寒 2021-01-14 07:20

I\'m trying to refactor some legacy code to use Spring to handle the jms connections to a mainframe service. I need to connect create a temporary topic for the mainframe ser

相关标签:
2条回答
  • 2021-01-14 08:18

    I was able to create a queue dynamically using the following code in a Spring Boot app:

    In Application.java

    @Bean 
    public ConnectionFactory jmsFactory()
    {
        ActiveMQConnectionFactory amq = new ActiveMQConnectionFactory()
    
        amq.setBrokerURL("tcp://somehost");
    
        return amq;
    }
    
    @Bean 
    public JmsTemplate myJmsTemplate()
    {
        JmsTemplate jmsTemplate = new JmsTemplate(jmsFactory());
    
        jmsTemplate.setPubSubDomain(false);
        return jmsTemplate;
    }
    

    Then in another class which creates the queue dynamically:

    @Component
    public class Foo {
        @Autowired
        private ConnectionFactory jmsFactory;
    
        public void someMethod () {
            DefaultMessageListenerContainer messageListener = new DefaultMessageListenerContainer();
    
            messageListener.setDestinationName("queueName");
            messageListener.setConnectionFactory(jmsFactory);
            messageListener.setMessageListener(new Consumer("queueName"));
            messageListener.setPubSubDomain(false);
            messageListener.initialize();
            messageListener.start();
        }
    }
    
    0 讨论(0)
  • 2021-01-14 08:21

    If you need low-level access to the JMS API using JmsTemplate, then you need to use one of JmsTemplate's execute(...) methods. The simplest of these is execute(SessionCallBack), where the SessionCallback provides you with the JMS Session object. With that, you can call createTemporaryQueue() or createTemporaryTopic(). You can probably use one of the other execute() methods do some of the initial work for you, though, such as this one.

    0 讨论(0)
提交回复
热议问题