2016-07-19 18 views
1

Ich habe ein MVC-Projekt, das das tut unterFrühling Integration für SimpMessagingTemplate

@Autowired 
SimpMessagingTemplate messagingTemplate; 

private void sendAlarmUpdate(AlarmNotify alarmNotify) { 
    messagingTemplate.convertAndSend("/topic/notify/alarm",alarmNotify); 
} 

Ich versuche, dies in dem Frühling Integration zu konvertieren int-stomp:outbound-channel-adapter verwenden, aber ich bin immer Ausnahme, dass der Message-Payload Array von Bytes sein sollte, i versucht, mein Objekt in JSON, aber immer noch die gleiche Umwandlung, was der richtige Weg ist, eine STOMP JSON-Nachricht von feder Integration

@Bean 
public Reactor2TcpStompClient stompClient() { 
    Reactor2TcpStompClient stompClient = new Reactor2TcpStompClient("192.168.70.XXX", 61613); 

    //stompClient.setMessageConverter(new PassThruMessageConverter()); 
    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); 
    taskScheduler.afterPropertiesSet(); 
    stompClient.setTaskScheduler(taskScheduler); 
    stompClient.setReceiptTimeLimit(5000); 
    return stompClient; 
} 

@Bean 
public StompSessionManager stompSessionManager() { 
    Reactor2TcpStompSessionManager stompSessionManager = new Reactor2TcpStompSessionManager(stompClient()); 
    stompSessionManager.setAutoReceipt(true); 
    return stompSessionManager; 

}

senden
<int:chain input-channel="stompChannel"> 
    <!--<int:object-to-json-transformer />--> 
    <int-stomp:outbound-channel-adapter stomp-session-manager="stompSessionManager" destination="/topic/notify/alarm1" id="stompAdapter" /> 
</int:chain> 

Antwort

0

Das Problem mit STOMP-Protokoll auf der Leitung, die es wirklich benötigt byte[] als Nachrichtentext.

So müssen Sie nicht andere Wahl haben, es sei denn, Ihr JSON in byte[] manuell konvertieren, oder bieten StringMessageConverter in Ihr stompClient statt dass PassThruMessageConverter kommentiert.