2016-07-14 66 views
0

我有一个在其他网站发送使用JmsTemplate消息如下的WebSocket和ActiveMQ的

@Override 
    public void send(SonusCDR cdr) { 
     jmsTemplate.setPubSubDomain(true); 
     jmsTemplate.convertAndSend("cdrserver/calls/" + cdr.getIncomingCallingNumber() , new BaseCDRMessage(cdr)); 
    } 

(主机内的Tomcat)我试图直接通过STOMP接收消息的程序

@Override 
    public void configureMessageBroker(MessageBrokerRegistry config) { 
     config.enableStompBrokerRelay("/topic", "/queue") 
       .setRelayHost("192.168.70.149") 
       .setRelayPort(61613); 
     config.setApplicationDestinationPrefixes("panel"); 

    } 

现在当我尝试从HTML连接到/topic/cdrserver/calls/121,我确实收到消息,但与空身

我认为问题是,该消息是在发送到ActiveMQ之前未序列化。解决这个问题的最好方法是什么?

回答

0

这是我做了什么来解决序列化的问题,但我不知道它是推荐的方式,也可以从一开始序列化的消息是更好,但现在这是我的解决方案

@JmsListener(destination = "cdrserver/calls") 
public void receiveMessage1(BaseCDRMessage cdrMessage) { 
    cdrMonitorService.sendCDR(cdrMessage); 
} 


@Override 
public void sendCDR(BaseCDRMessage cdrMessage) { 
    messagingTemplate.convertAndSend("/topic/panel/calls/" + cdrMessage.getIncomingCallingNumber(),cdrMessage); 
}