2010-09-21 31 views
0

Dans un système distribué avec le flux de données suivantes:ZeroMQ sur la base du système distribué

  1. le client envoie un message pour un noeud aléatoire dans le système distribué.
  2. Le noeud vérifie si l'opération peut être effectuée par lui. Sinon, envoie le message à un autre noeud. Et le processus suit jusqu'au bon noeud.

Ainsi, le système a le flux suivant:

client -> nodeX -> nodeY -> nodeZ

Si je veux envoyer un signal OK au client (à partir nodeX), sera le bloc de processus utilisant ZeroMQ?

Merci!

Répondre

1

Normalement, zmq_send ne bloque pas, mais il y a des cas où il peut bloquer Voir la vue d'ensemble here, cela dépend du type de socket que vous utilisez. Les messages seront mis en file d'attente si le nœud auquel vous envoyez ne peut pas être contacté/lit lentement/ralentit le réseau ou les transmissions, etc. Vous pouvez définir un seuil pour ce qui se passe lorsque la file d'attente des messages (messages non encore livrés) atteint une certaine taille, ce seuil s'appelle ZMQ_HW.

Que ce soit des blocs zmq_send() ou gouttes messages lorsque des messages ZMQ_HW sont mis en attente, vous pouvez voir dans la documentation zmq_socket mentionné ci-dessus.