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}]
誰も似たようなことに直面しましたか?前もって感謝します :)