Как использовать spring-messaging-5.1. * Для подключения stomp + ssl брокера? - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу использовать stomp через websocket и собираюсь интегрироваться с Amazon MQ, но Amazon MQ по умолчанию использует stomp + ssl, тогда я сталкиваюсь с моей проблемой.

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

@Autowired
private ActiveMQProperties activeMQProperties;

/**
 * Register STOMP endpoints mapping each to a specific URL and (optionally)
 * enabling and configuring SockJS fallback options.
 *
 * @param registry
 */
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/endpoint").setAllowedOrigins("*");
}

/**
 * Configure message broker options.
 *
 * @param registry
 */
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.setApplicationDestinationPrefixes("/app");
    registry.enableStompBrokerRelay("/queue", "/topic")
            .setAutoStartup(true)
            .setVirtualHost(activeMQProperties.getHost())
            .setRelayHost(activeMQProperties.getHost())
            .setRelayPort(activeMQProperties.getPort())
            .setSystemLogin(activeMQProperties.getUser())
            .setSystemPasscode(activeMQProperties.getPassword())
            .setClientLogin(activeMQProperties.getUser())
            .setClientPasscode(activeMQProperties.getPassword());
   }}

ReactorNettyTcpClient - это реализация TcpOperations в Spring-Messaging-5.1. * Как она может поддерживать SSL?

1 Ответ

0 голосов
/ 08 ноября 2018

Недавно столкнулся с этой проблемой при использовании ActiveMQ.

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {

    ReactorNettyTcpClient<byte[]> client = new ReactorNettyTcpClient<>(builder -> { 
        builder.port(activeMQProperties.getPort())
               .host(activeMQProperties.getHost())
               .sslSupport(opts -> { /* set SSL options here */})
    }, new StompReactorNettyCodec());

    registry.setApplicationDestinationPrefixes("/app");
    registry.enableStompBrokerRelay("/queue", "/topic")
        .setAutoStartup(true)
        .setVirtualHost(activeMQProperties.getHost())
        .setSystemLogin(activeMQProperties.getUser())
        .setSystemPasscode(activeMQProperties.getPassword())
        .setClientLogin(activeMQProperties.getUser())
        .setClientPasscode(activeMQProperties.getPassword())
        .setTcpClient(client);
}}
...