在SpringBoot中为ActiveMQ / Stomp配置MessageTransformer

时间:2018-01-05 21:44:48

标签: spring-boot activemq stomp

我有一个带有ActiveMQ和Stomp的springboot项目。 我希望每个发送或接收的消息都通过MessageTransformer运行,以执行特定的序列化/反序列化。 与我的WebApp的Stomp消息交换工作,但从未调用安装的MessageTransformer。 有人知道可能出错吗?非常感谢!

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.MessageTransformer;
import org.apache.activemq.broker.BrokerFactory;
import org.apache.activemq.broker.BrokerService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Value("${stomp.port}")   // 61616
    int stompPort;


    @Bean
    public ActiveMQConnectionFactory activeMQConnectionFactory() {

        ActiveMQConnectionFactory activeMQConnectionFactory = 
                    new ActiveMQConnectionFactory("vm://localhost");

        // Install Message Converter ## But does not work ##
        MessageTransformer messageTransformer = new ClientMessageTransformer();
        activeMQConnectionFactory.setTransformer(messageTransformer);

        return activeMQConnectionFactory;
    }


    @Bean
    public BrokerService brokerService() throws Exception {

        BrokerService brokerService = 
                 BrokerFactory.createBroker(String.format(
                   "broker:(stomp://localhost:%d)" +
                   "?persistent=false&useJmx=false&useShutdownHook=true", 
                    stompPort));

        return brokerService;
    }

0 个答案:

没有答案