Java HornetQ上的STOMP同步消息传递

Java HornetQ上的STOMP同步消息传递,java,jms,synchronous,hornetq,stomp,Java,Jms,Synchronous,Hornetq,Stomp,我正在试图弄清楚如何使用stomp和hornetq进行同步消息传递,或者如果可能的话。我有一个异步stomp客户端正在工作,但我不知道如何实现同步版本 在服务器端,我的接受者如下所示: <acceptor name="stomp-acceptor"> <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class> <p

我正在试图弄清楚如何使用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();

}

org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory
我的听众是这样的:

<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();

}
公共类SimpleSyncListener扩展BaseListener实现SessionWareMessageListener{
@凌驾
public void onMessage(消息消息、会话会话)引发JMSException{
字符串lastMessage=“”;
试一试{
lastMessage=((TextMessage)message.getText();
//System.out.println(“服务器接收:+lastMessage”);
Destination replyDestination=message.getJMSReplyTo();
StringBuffer sb=新的StringBuffer();
某人附加(“答复”);
sb.append(Calendar.getInstance().getTimeInMillis());
某人加上(“”);
某人追加(最后一条消息);
TextMessage replyMessage=session.createTextMessage(sb.toString());
replyMessage.setJMSCorrelationID(message.getJMSMessageID());
MessageProducer replyProducer=session.createProducer(replyDestination);
replyProducer.send(replyMessage);
}捕获(JME){
抛出新的运行时异常(e);
}
递增计数();
}

我假设我需要在临时队列中放入一些内容,然后像使用JMS一样将其发送回。我只是不清楚如何使用STOMP。我是否需要在客户端打开另一个与“临时队列”对应的tcp连接在服务器端?

Stomp是一个简单的协议,在这种情况下,我认为您不可能拥有多路复用通道。因此,您可能需要一个流来发送,一个流来接收。

实现同步(请求/响应)的常见策略许多消息代理(ActiveMQ、Apollo、OpenMQ和RabbitMQ)的STOMP实现也提供了使用临时目的地与JMS的通信

但是,HornetQ在当前的2.4.0.Final版本中不支持临时目的地