2009-10-19 5 views
3

Я пытаюсь реорганизовать некоторый старый код, чтобы использовать Spring для обработки соединений jms с помощью службы мэйнфреймов. Мне нужно создать временную тему для ответа службы мэйнфрейма и установить ее в сообщении message.setJMSReplyTo(replyTo);, прежде чем я отправлю сообщение.Создание временной темы JMS jms весной

Может ли кто-нибудь представить примеры этого? Я не нашел ничего в документации, которая позволяет вам перейти на объекты jms низкого уровня, такие как сеанс или TopicConnection, чтобы создать временную тему.

ответ

1

Если вам нужен низкоуровневый доступ к JMS API с использованием JmsTemplate, вам необходимо использовать один из методов JmsTemplate's execute(...). Самый простой из них - execute(SessionCallBack), где SessionCallback предоставляет вам объект сеанса JMS. При этом вы можете позвонить createTemporaryQueue() или createTemporaryTopic(). Вы, вероятно, можете использовать один из других методов execute(), чтобы выполнить некоторую начальную работу для вас, например, this one.

0

Я был в состоянии создать очередь динамически с помощью следующего кода в приложение 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(); 
    } 
} 
Смежные вопросы