我试图重构一些旧的代码使用Spring来处理到主机服务的JMS连接。 我需要连接创建主机服务回复临时主题,并设置为message.setJMSReplyTo(replyTo);
在消息中之前,我发送消息。
任何人都可以提供这方面的例子? 我还没有找到可以让你获得低级别JMS对象,如会议或TopicConnection为了创建一个临时主题的文档中任何事情。
我试图重构一些旧的代码使用Spring来处理到主机服务的JMS连接。 我需要连接创建主机服务回复临时主题,并设置为message.setJMSReplyTo(replyTo);
在消息中之前,我发送消息。
任何人都可以提供这方面的例子? 我还没有找到可以让你获得低级别JMS对象,如会议或TopicConnection为了创建一个临时主题的文档中任何事情。
如果你需要的JMS API低级别访问使用JmsTemplate
,那么你需要使用一个JmsTemplate的execute(...)
方法。 其中最简单的是execute(SessionCallBack)
,其中SessionCallback为用户提供您与JMS Session对象。 就这样,你可以调用createTemporaryQueue()
或createTemporaryTopic()
你也许可以使用其他的execute()方法之一,做一些前期工作的你,虽然,如这一个 。
我能够创建一个动态队列使用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();
}
}