SimpMessagingTemplate

时间:2016-07-19 12:31:30

标签: spring-integration stomp

我有一个MVC项目,可以执行以下操作

@Autowired
SimpMessagingTemplate messagingTemplate;

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

我正在尝试使用int-stomp:outbound-channel-adapter将其转换为Spring Integration但我得到的异常是消息有效负载应该是字节数组,我尝试将我的对象转换为JSON但仍然是相同的,正确的方法是什么从spring-integration

发送STOMP JSON消息
@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;

}

<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>

1 个答案:

答案 0 :(得分:0)

网络上的STOMP协议问题确实需要byte[]作为邮件正文。

因此,除非您手动将JSON转换为byte[],或者将StringMessageConverter提供给stompClient而不是评论PassThruMessageConverter,否则您无法选择。