Table des matières
Bonne réponse
Maison Java Gérer les connexions MQTT et STOMP sous-jacentes à l'aide de l'adaptateur Spring Integration

Gérer les connexions MQTT et STOMP sous-jacentes à l'aide de l'adaptateur Spring Integration

Feb 05, 2024 pm 10:00 PM

Contenu de la question

Nous avons des processus d'intégration Spring pour gérer les messages arrivant via mqtt ou stomp. Pour cela nous utilisons un adaptateur mqttpahomessagedrivenchanneladapterstompinboundchanneladapter. Dans le cas de mqtt, nous avons observé que si un point de terminaison du flux lève une exception, l'adaptateur ferme la connexion et ne reçoit plus de messages. De même, si nous redémarrons le proxy, la connexion à celui-ci ne sera plus établie.

Afin de gérer les exceptions, nous définissons le nom du canal d'erreur sur la valeur gérée par Spring par défaut "errorchannel" adaptateur. Notre intention est de consigner uniquement l'exception sans fermer la connexion sous-jacente. Est-ce la bonne façon de gérer les exceptions tout au long du processus ?

Concernant la problématique de reconnexion, nous disposons de méthodes différentes pour chaque protocole de transport.

  • Pour mqtt, nous le ferons connectionoptionsautomaticreconnect 设置为 true :
var clientfactory = new defaultmqttpahoclientfactory();
clientfactory.getconnectionoptions().setautomaticreconnect(true);

var adapter = new mqttpahomessagedrivenchanneladapter("tcp://localhost:1883", mqttasyncclient.generateclientid(), clientfactory, "/topic/mytopic");
adapter.seterrorchannelname("errorchannel");
Copier après la connexion
  • Pour stomp, on met taskscheduler 设置为 reactornettytcpstompclient en contexte :
var stompClient = new ReactorNettyTcpStompClient(host, port);
stompClient.setTaskScheduler(taskScheduler);

var stompSessionManager = new ReactorNettyTcpStompSessionManager(stompClient);

var adapter = new StompInboundChannelAdapter(stompSessionManager, "/queue/myQueue");
adapter.setErrorChannelName("errorChannel");
Copier après la connexion

Est-ce la meilleure façon de gérer ce problème ?


Bonne réponse


Oui, errorchannel 选项是抑制向 mqtt 客户端抛出异常的好方法。不必是全局 errorchannel ,它可能在许多不同的地方使用。 setautomaticreconnect(true) est en effet recommandé pour les adaptateurs de canaux entrants.

Non utilisé dans reactornettytcpstompclienttaskscheduler 不适用于重新连接。请参阅其 javadocs。我认为重新连接逻辑在 reactornettytcpstompclient : 

public completablefuture<stompsession> connectasync(@nullable stompheaders connectheaders, stompsessionhandler handler) {
    connectionhandlingstompsession session = createsession(connectheaders, handler);
    this.tcpclient.connectasync(session);
    return session.getsession();
}
Copier après la connexion

Cas de reconnexion via une autre variante :

CompletableFuture<Void> connectAsync(TcpConnectionHandler<P> connectionHandler, ReconnectStrategy reconnectStrategy);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)