2016-07-14 50 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); 
}