Testen Sie den STOMP-Server auf Basis von Java

1. Ziele

Im vorherigen Abschnitt haben wir über die Erstellung von SpringBoot + WebSocket + STOMP gesprochen, um Push-Nachrichten anzugeben . Wir testen es in diesem Abschnitt.

Unsere erwarteten Parallelitätsziele:

  • Unterstützen Sie mehr als 10.000 Benutzer
  • Jeder Benutzer veröffentlicht 500 Daten gleichzeitig

Die Umgebung, die wir vorbereiten:

  • -Xms512m
  • -Xmx4096m
  • CPU 12 Kerne 20 Threads
  • Speicher 16G

2. Serverseitige Änderungen

Wir haben den vorherigen Server wie folgt eingerichtet config.enableSimpleBroker(). Diese Art der Einrichtung gehört zur Einsteiger-Nutzung, sie ist sehr einfach, unterstützt aber nur eine Teilmenge der STOMP-Befehle (keine Bestätigung, Empfang usw.).

Wenn wir jedoch testen, bitten wir Sie, den Abonnementstatus zu bestätigen, um festzustellen, ob das Abonnement erfolgreich ist. Daher muss die bisherige Konfigurationsklasse geändert werden, um den Anforderungen gerecht zu werden.

Konfiguration der Client-Abonnementbestätigung:

 @Bean
    public ApplicationListener<SessionSubscribeEvent> webSocketEventListener(
            final AbstractSubscribableChannel clientOutboundChannel) {
   
    
    
        return event -> {
   
    
    
            Message<byte[]> message = event.getMessage();
            StompHeaderAccessor stompHeaderAccessor = StompHeaderAccessor.wrap(message);
            if (stompHeaderAccessor.getReceipt() != null) {
   
    
    
                stompHeaderAccessor.setHeader("stompCommand", StompCommand.RECEIPT);
                stompHeaderAccessor.setReceiptId(stompHeaderAccessor.getReceipt());
                clientOutboundChannel.send(
                        MessageBuilder.createMessage(new byte[0], stompHeaderAccessor.getMessageHeaders()));
            }
        };
    }

3. Testablauf

3.1 Abhängigkeit

  <dependency>
            <groupId>org.eclipse.jetty.websocket</groupId>
            <artifactId>websocket-client</artifactId>
            <version>9.4.48.v20220622</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty.websocket</groupId>
            <artifactId>websocket-server</artifactId>
			<version>9.4.48.v20220622</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
			<version>9.4.48.v20220622</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-client</artifactId>
			<version>9.4.48.v20220622</version>
            <scope>test</scope>
        </dependency>

3.1 Anzahl der Benutzer und Anzahl der Nachrichten

	//用户量
	private static final int NUMBER_OF_USERS = 10000;

	//消息数
	private static final int BROADCAST_MESSAGE_COUNT = 500;

3.2 Testen Sie, ob der Port verfügbar ist

		String host = "localhost";
		if (args.length > 0) {
   
    
    
			host = args[0<

Supongo que te gusta

Origin blog.csdn.net/qq_35241329/article/details/131897714
Recomendado
Clasificación