синхронный обмен сообщениями с STOMP через HornetQ - PullRequest
3 голосов
/ 24 сентября 2011

Я пытаюсь выяснить, как сделать синхронный обмен сообщениями, используя Stomp с Hornetq, или, если это возможно.У меня работает асинхронный клиент Stomp, но я не вижу, как реализовать версию синхронизации.

На стороне сервера мой акцептор выглядит так:

<acceptor name="stomp-acceptor">
  <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>        
  <param key="protocol" value="stomp" />
  <param key="port" value="61613" />
</acceptor>

ислушатель выглядит так:

public class SimpleSyncListener extends BaseListener implements SessionAwareMessageListener<Message> {

@Override
public void onMessage(Message message, Session session) throws JMSException {
    String lastMessage = "";

    try {
        lastMessage = ((TextMessage) message).getText();

        //System.out.println("server recieved: " + lastMessage);

        Destination replyDestination = message.getJMSReplyTo();

        StringBuffer sb = new StringBuffer();
        sb.append("reply ");
        sb.append(Calendar.getInstance().getTimeInMillis());
        sb.append(" ");
        sb.append(lastMessage);
        TextMessage replyMessage = session.createTextMessage(sb.toString());
        replyMessage.setJMSCorrelationID(message.getJMSMessageID());

        MessageProducer replyProducer = session.createProducer(replyDestination);

        replyProducer.send(replyMessage);

    } catch (JMSException e) {
        throw new RuntimeException(e);
    }
    incrementCount();

}

Я предполагаю, что мне нужно поместить что-то во временную очередь и отправить обратно, как вы делаете с JMS.Мне просто не ясно, как это работает с STOMP.Нужно ли мне открыть еще одно соединение TCP на стороне клиента, которое соответствует «временной очереди» на стороне сервера?

Ответы [ 2 ]

1 голос
/ 25 сентября 2011

Stomp - это простой протокол, и в этом случае я не думаю, что у вас может быть мультиплексированный канал. Поэтому вам, вероятно, потребуется поток для отправки и поток для получения.

0 голосов
/ 18 октября 2014

Общая стратегия для реализации синхронной (запрос / ответ) связи с JMS - с использованием временных назначений - также доступна с реализациями STOMP многих брокеров сообщений (примеры ActiveMQ, Apollo, OpenMQ и RabbitMQ).

Однако HornetQ не поддерживает временные пункты назначения в текущей версии 2.4.0. Окончательная версия.

...