Java обмен сообщениями JMS

У меня есть рабочий пример передающего сообщения к серверу и серверу, получающему его через обмен сообщениями qpid. Здесь просто привет мир для отправки к серверу:

http://pastebin.com/M7mSECJn

И вот сервер, который получает запросы и отправляет ответ (текущий клиент не получает ответ):

http://pastebin.com/2mEeuzrV

Вот мой файл свойств:

http://pastebin.com/TLEFdpXG

Они все работают отлично, я вижу сообщения в qpid очереди через консоль управления Qpid JMX. Эти примеры загружаются с https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/client/example (кому-то, возможно, понадобится он также).

Я сделал обмен сообщениями Jboss, использующий пружину прежде, но мне не может удаться сделать то же с qpid. С jboss внутри applicationsContext у меня были бобы jndiTemplate, conectionFactory, destinationQueue, и jmscontainer как это:


 
  
   
    org.jnp.interfaces.NamingContextFactory
    jnp://localhost:1099
    org.jboss.naming:org.jnp.interfaces
    admin
    admin
   
  
 

 
  
  
 

 
  
  
   queue/testQueue
  
 

  
  
  
  
 

и конечно отправитель и слушатель:

 
  
  
 


 

Теперь я хотел бы переписать этот qpid пример, использующий пружинную логику контекста. Кто-либо может помочь мне?

8
задан skaffman 1 June 2010 в 08:56
поделиться

1 ответ

Spring предлагает класс JmsTemplate. Посетите этот веб-сайт, где есть пример того, как настроить шаблон (с activemq)

В вашем конкретном примере попробуйте заменить jmsContainer следующим образом:

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
  <property name="connectionFactory" ref="connectionFactory" />
</bean>

Вы также необходимо изменить свой код, чтобы использовать Spring JmsTemplate:

public class MessageSender  {

    private Destination destination;
    private JmsTemplate jmsTemplate;

    public void setJmsTemplate(JmsTemplate jmsTemplate)  {
        this.jmsTemplate = jmsTemplate;
    }

    public void setDestination(Destination destination) {
        this.destination = destination;
    }

    public void sendMessage() { 
        MessageCreator creator = new MessageCreator() {
            public Message createMessage(Session session) {
                TextMessage message = null;
                try  {
                    message = session.createTextMessage();
                    message.setStringProperty("text", "Hello, World!");
                }
                catch (JMSException e) {
                    e.printStackTrace();
                }
                return message;
            }
        };  
    jmsTemplate.send(destination, creator);
    }
}

На сайте springsource также есть хорошая документация для this

1
ответ дан 6 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: