20.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.

Exemple 20.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>
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.
Le tableau suivant décrit les propriétés de configuration de Netty TCP :

Tableau 20.1. 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é comme « 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 anciens e/s non bloquantes de Java seront utilisées. Si vous avez besoin que le serveur utilise plusieurs connexions NIO Java concourantes non bloquantes, sinon, 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).