spring-boot - 如何使用 spring-messaging-5.1.* 连接 stomp+ssl broker?

标签 spring-boot ssl websocket stomp amazon-mq

我想在 websocket 上使用 stomp 并打算与 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是spring-messaging-5.1.*中TcpOperations的实现,怎么支持SSL呢?

最佳答案

最近在使用 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);
}}

关于spring-boot - 如何使用 spring-messaging-5.1.* 连接 stomp+ssl broker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53105451/

相关文章:

java - SpringBoot 1.2.1 MongoRepository

java - Spring Boot 。映射 2 个独立的项目 Controller 而忽略一个项目

java - Spring Boot 2.0.3 Oauth2 安全 : Getting 401 error even when using access token in header

ssl - 由于通过 _asn1_ordering_set_of 重新排序导致签名验证失败

sockets - TcpClient 和 WebSocket 的区别?

node.js - socket io admin ui不显示所有信息

javascript - websockets,使用来自服务器的消息更新 div

java - Spring Boot w/JSP - 找不到 CSS 文件

c# - 在 C# 服务器上管理连接的 android 客户端

sql-server-2005 - 使用 Wireshark 检查通过 SSL 的 SQL 连接的加密握手