1

それで、私はここでRossen Stoyanchevによる優れた例からsockJsコードを複製しようとしていました: https://github.com/rstoyanchev/spring-websocket-portfolio/blob/master/src/test/Java/org/springframework/samples/ポートフォリオ/ウェブ/ロード/StompWebSocketLoadTestClient.java

ただし、Stomp エンドポイントに接続できないという問題が発生しました。で実行がフリーズしstompClient.connect()、それ以上のデバッグ メッセージは表示されず、ハンドラからも表示されません。

これが私のコードです:

public void waitForGreet() throws Exception {

    String stompUrl = "ws://127.0.0.1:61613/stomp";

    StandardWebSocketClient webSocketClient = new StandardWebSocketClient();

    HttpClient jettyHttpClient = new HttpClient();
    jettyHttpClient.setMaxConnectionsPerDestination(1000);
    jettyHttpClient.setExecutor(new QueuedThreadPool(1000));
    jettyHttpClient.start();

    List<Transport> transports = new ArrayList<>(2);
    transports.add(new WebSocketTransport(webSocketClient));
    transports.add(new JettyXhrTransport(jettyHttpClient));

    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.afterPropertiesSet();

    SockJsClient sockJsClient = new SockJsClient(transports);
    WebSocketStompClient stompClient = new WebSocketStompClient(sockJsClient);
    //WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient);
    stompClient.setMessageConverter(new StringMessageConverter(Charset.defaultCharset()));
    stompClient.setDefaultHeartbeat(new long[]{0, 0});
    stompClient.setTaskScheduler(taskScheduler);

    stompClient.connect(stompUrl, handler, "localhost", 61613);
}

私がWebSocketStompClientそれを使用すると、すべて正常に動作します。

この問題は ActiveMQ で再現できるため、Artemis 固有の問題ではないと思います。Spring Boot を使用してこのアプリを実行しましたが、特に何も構成していませんWebSocketStompClient

誰かが同様の問題に遭遇したことがある場合は、これを修正する方法についての洞察や提案をいただければ幸いです。ここで追加のブローカー/スプリングアプリ構成が欠落していますか?

4

0 に答える 0