18.2.2. Configuration de Netty TCP
Netty TCP est un simple transport de sockets basées TCP non chiffré. Netty TCP peut être configuré pour utiliser l'ancien blocage Java IO ou Java NIO non bloquant. Java NIO est recommandé pour une meilleure évolutivité avec un grand nombre de connexions simultanées sur le serveur. Si le nombre de connexions simultanées est moindre, l'ancien Java IO peut donner une meilleure latence que NIO.
Netty TCP n'est pas conseillé pour les connexions défilant sur un réseau non sécurisé car il est encodé. Avec le transport Netty TCP, toutes les connexions sont initiées côté client.
La configuration de l'exemple montre également comment l'application JBoss EAP 6 de HornetQ utilise des liaisons de socket dans la configuration du connecteur et l'accepteur. Cela diffère de la version autonome de HornetQ, qui vous oblige à déclarer les ports et les hôtes spécifiques.
Exemple 18.1. Exemple de configuration de Netty TCP à partir de la configuration EAP par défaut
<connectors> <netty-connector name="netty" socket-binding="messaging"/> <netty-connector name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> </netty-connector> <in-vm-connector name="in-vm" server-id="0"/> </connectors> <acceptors> <netty-acceptor name="netty" socket-binding="messaging"/> <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> <param key="direct-deliver" value="false"/> </netty-acceptor> <in-vm-acceptor name="in-vm" server-id="0"/> </acceptors>
Le tableau suivant décrit les propriétés de configuration de Netty TCP :
Property | Par défaut | Description |
---|---|---|
batch-delay | 0 millisecondes | Avant d'inscrire les paquets au tranport, HornetQ peut être configuré pour regrouper les écritures pour un maximum de milisecondes de batch-delay. Cela augmentera le débit total pour les petits messages en augmentant la latence de transfert de messages. |
direct-deliver | true | Lorsqu'un message arrive sur le serveur et est livré aux consommateurs qui attendent, par défaut, la livraison se fait sur le même thread que celui sur lequel le message est arrivé. Cela donne une bonne latence dans des environnements avec des messages relativement peu volumineux et un petit nombre de consommateurs, mais réduit le débit et la latence. Pour un débit plus élevé, vous pouvez définir cette propriété à « false » |
local-address | [local address available] | Pour un connecteur netty, c'est utilisé pour indiquer l'adresse locale que le client va utiliser quand il se connectera à l'adresse distante. Si une adresse locale n'est pas spécifiée, le connecteur utilisera n'importe quelle adresse locale disponible. |
local-port | 0 | Pour un connecteur netty, c'est utilisé pour indiquer le port local que le client va utiliser quand il se connectera à l'adresse distante. Si le port local par défaut est utilisé (0), le connecteur laissera le système collecter un port éphémère. Les ports valides sont 0 à 65535 |
nio-remoting-threads | -1 | Si configuré pour utiliser NIO, HornetQ, par défaut, utilise un nombre de threads égal à trois fois le nombre de noyaux (ou hyper-threads) rapporté par Runtime.getRuntime().availableProcessors() pour le traitement des paquets entrants. Pour substituer cette valeur, vous pouvez définir une valeur personnalisée pour le nombre de threads |
tcp-no-delay | true | Si sur true, alors l'agorithme sera activé. Cet algorithme aide à améliorer l'efficacité des réseaux TCP/IP en réduisant le nombre de paquets à envoyer sur le réseau |
tcp-send-buffer-size | 32768 bytes | Ce paramètre détermine la taille du tampon d'envoi TCP en octets |
tcp-receive-buffer-size | 32768 bytes | Ce paramètre détermine la taille du tampon de réception TCP en octets |
use-nio | false | Si cela est sur true, alors les NIO Java non bloquantes seront utilisées. Si sur false, alors les anciennes e/s non bloquantes de Java seront utilisées. Si vous avez besoin que le serveur utilise plusieurs connexions concourantes, utiliser les NIO Java non bloquantes, sinin, choisissez les anciennes e/s (bloquantes) |
Note
Les propriétés de Netty TCP sont valides pour tous les types de transport (Netty SSL, Netty HTTP et Netty Servlet).