복붙노트

[SPRING] Spring에서 임시 JMS jms 주제 만들기

SPRING

Spring에서 임시 JMS jms 주제 만들기

Spring을 사용하여 메인 프레임 서비스에 대한 jms 연결을 처리하는 일부 레거시 코드를 리팩토링하려고합니다. 메인 프레임 서비스 응답에 대한 임시 주제를 연결하고이를 message.setJMSReplyTo (replyTo)로 설정해야합니다. 메시지를 보내기 전에 메시지에.

누구든지이 예제를 제공 할 수 있습니까? 임시 토픽을 만들기 위해 세션이나 TopicConnection과 같은 저수준의 jms 객체를 얻을 수있는 문서를 찾지 못했습니다.

해결법

  1. ==============================

    1.JmsTemplate을 사용하여 JMS API에 낮은 수준의 액세스가 필요한 경우 JmsTemplate의 execute (...) 메소드 중 하나를 사용해야합니다. 가장 간단한 방법은 execute (SessionCallBack)입니다. 여기서 SessionCallback은 JMS Session 객체를 제공합니다. 이를 통해 createTemporaryQueue () 또는 createTemporaryTopic ()을 호출 할 수 있습니다. 아마도 다른 하나의 execute () 메소드 중 하나를 사용하여 초기 작업을 수행 할 수 있습니다.

    JmsTemplate을 사용하여 JMS API에 낮은 수준의 액세스가 필요한 경우 JmsTemplate의 execute (...) 메소드 중 하나를 사용해야합니다. 가장 간단한 방법은 execute (SessionCallBack)입니다. 여기서 SessionCallback은 JMS Session 객체를 제공합니다. 이를 통해 createTemporaryQueue () 또는 createTemporaryTopic ()을 호출 할 수 있습니다. 아마도 다른 하나의 execute () 메소드 중 하나를 사용하여 초기 작업을 수행 할 수 있습니다.

  2. ==============================

    2.나는 Spring Boot app에서 다음 코드를 사용하여 큐를 동적으로 생성 할 수 있었다.

    나는 Spring Boot app에서 다음 코드를 사용하여 큐를 동적으로 생성 할 수 있었다.

    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;
    }
    

    그런 다음 동적으로 큐를 생성하는 다른 클래스에서 :

    @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();
        }
    }
    
  3. from https://stackoverflow.com/questions/1590306/creating-temporary-jms-jms-topic-in-spring by cc-by-sa and MIT license