【问题标题】:Creating temporary JMS jms topic in Spring在 Spring 中创建临时 JMS jms 主题
【发布时间】:2015-02-05 01:22:50
【问题描述】:

我正在尝试重构一些遗留代码以使用 Spring 来处理与大型机服务的 jms 连接。我需要为大型机服务回复创建一个临时主题,并在发送消息之前将其设置为消息中的message.setJMSReplyTo(replyTo);

谁能提供这方面的例子?我在文档中没有找到任何可以让您访问低级 jms 对象(例如 session 或 TopicConnection)以创建临时主题的内容。

【问题讨论】:

    标签: java spring jms jmstemplate


    【解决方案1】:

    如果您需要使用JmsTemplate 对JMS API 进行低级别访问,那么您需要使用JmsTemplate's execute(...) 方法之一。其中最简单的是execute(SessionCallBack),其中 SessionCallback 为您提供 JMS Session 对象。有了它,您可以致电createTemporaryQueue()createTemporaryTopic()。不过,您可能可以使用其他 execute() 方法之一为您完成一些初始工作,例如 this one

    【讨论】:

      【解决方案2】:

      我能够在 Spring Boot 应用程序中使用以下代码动态创建队列:

      在 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();
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-31
        • 2014-09-15
        • 2018-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        相关资源
        最近更新 更多