创建临时JMS JMS在Spring主题(Creating temporary JMS jms to

2019-08-20 23:38发布

我试图重构一些旧的代码使用Spring来处理到主机服务的JMS连接。 我需要连接创建主机服务回复临时主题,并设置为message.setJMSReplyTo(replyTo); 在消息中之前,我发送消息。

任何人都可以提供这方面的例子? 我还没有找到可以让你获得低级别JMS对象,如会议或TopicConnection为了创建一个临时主题的文档中任何事情。

Answer 1:

如果你需要的JMS API低级别访问使用JmsTemplate ,那么你需要使用一个JmsTemplate的execute(...)方法。 其中最简单的是execute(SessionCallBack) ,其中SessionCallback为用户提供您与JMS Session对象。 就这样,你可以调用createTemporaryQueue()createTemporaryTopic() 你也许可以使用其他的execute()方法之一,做一些前期工作的你,虽然,如这一个 。



Answer 2:

我能够创建一个动态队列使用Spring的引导程序下面的代码:

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


文章来源: Creating temporary JMS jms topic in Spring