2

Spring Boot アプリケーションで websocket の外部ブローカー (amazonMQ) リレーを構成しています。

起動時の構成は問題ないようで、以下のログのようにリレーが接続されています。悪い URL でテストしたところ、明らかに UnknownHostException が発生したため、ホスト構成は適切であると思います。

これをローカルの ActiveMQ でテストしたところ、テスト セットアップは問題なく動作するため、メッセージ フローにも問題はありません。コンシューマが接続され、管理コンソールにトピックが作成されていることがわかりました。

ここにSpring Documentation hereに基づく私のコードがあります!

クライアントに接続しようとすると、接続メッセージを受信した後、同じセッションの切断が続きます。

それがSSLの問題である場合、SSLを構成するためのSpring Documentationに参照が見つかりませんでした。


   private static final String HOST = "b-xxxxxxxxxxxxxxxxxx.mq.aws-region.amazonaws.com";
    private static final int PORT = 61617;
    private static final String USER = "username-here";
    private static final String PASSCODE = "passcode-here";

    private ReactorNettyTcpClient<byte[]> createTcpClient() {

        return new ReactorNettyTcpClient(HOST, PORT, new StompReactorNettyCodec());
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableStompBrokerRelay()
                .setRelayHost(HOST)
                .setRelayPort(PORT)
                .setSystemLogin(USER)
                .setSystemPasscode(PASSCODE)
                .setClientLogin(USER)
                .setClientPasscode(PASSCODE)
                .setTcpClient(createTcpClient());


        registry.setApplicationDestinationPrefixes("/app")
                .setPathMatcher(new AntPathMatcher("."));

    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws")
                .setAllowedOrigins("*").withSockJS();
    }

     @Override
    public void configureClientInboundChannel(ChannelRegistration registration) {
        AuthenticatedUser a = null;
        registration.interceptors(new ChannelInterceptorAdapter() {
            @Override
            public Message<?> preSend(Message<?> message, MessageChannel channel) {
                StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
                log.info(" accessor {}", accessor);

                return message;
            }

        });

起動時のログ

     Starting...
     Connecting "system" session to 
      stomp://XXXXXXXXXXXXXXXXX.mq.XXXXXX.amazonaws.com:61617
     Started.
     Tomcat started on port(s): 8080 (http) with context path ''

クライアントが接続を試みたときのログ

     accessor StompHeaderAccessor [headers={simpMessageType=CONNECT, 
     stompCommand=CONNECT, nativeHeaders={accept-version=[1.1,1.0], heart-beat=[10000,10000]}, 
     simpSessionAttributes={}, simpHeartbeat=[J@7070e97e, 
     simpSessionId=52usza4t}]

     accessor StompHeaderAccessor [headers={simpMessageType=DISCONNECT, 
     stompCommand=DISCONNECT, simpSessionAttributes={}, 
     simpSessionId=52usza4t}]

誰も似たようなことに直面しましたか?前もって感謝します :)

4

1 に答える 1