Я пытаюсь выяснить, как сделать синхронный обмен сообщениями, используя 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 на стороне клиента, которое соответствует «временной очереди» на стороне сервера?