La première API dont nous allons parler est l'API qui permet au programmeur de créer une file d'attente
de messages.
Un processus peut donc créer une nouvelle file d'attente de messages ou utiliser une file d'attente de messages existante à l'aide de l'API message
queue open.
La valeur de retour de cette file d'attente est en fait un type de données qui représente le descripteur de fichier de la
file d'attente.
Il s'agit donc d'un descripteur de fichier de la file d'attente des messages.
Il s'agit donc d'un type de données intégré et nous l'utilisons pour représenter le descripteur de fichier renvoyé par l'API
ouverte de la file d'attente de messages.
Il existe maintenant deux types de fonction d'ouverture de passage.
Il s'agit de la première saveur dans laquelle vous ne transmettez que le nom de la file d'attente de messages et certains drapeaux à la file d'attente
de messages.
Dans la deuxième variante de cette API, nous transmettons le nom de la file d'attente de messages et les drapeaux de la file d'attente de
messages.
En outre, nous transmettons également le mode et les attributs de la file d'attente de messages.
Nous allons donc examiner en détail les arguments que nous transmettons à la file d'attente des messages.
API ouverte.
Tout d'abord, le nom.
Comme nous l'avons vu, une file d'attente de messages dans le système est identifiée de façon unique par un ID unique.
Cet identifiant unique est une chaîne de caractères.
Nous transmettons donc cet identifiant unique sous la forme d'une chaîne de caractères, en tant que premier argument d'une API d'ouverture de file d'attente de messages.
Voir l'exemple ici.
Ici, nous transmettons l'identifiant de la file d'attente de messages sous la forme d'une barre oblique serveur trait d'union message trait d'union file d'attente.
Il s'agit donc de l'identifiant de la file d'attente de messages.
N'oubliez pas que l'ID de la file d'attente de messages doit commencer par une barre oblique.
Le deuxième argument est constitué de certains drapeaux que nous transmettons en tant qu'argument à l'API d'ouverture des messages.
Voyons maintenant quels sont les drapeaux que nous pouvons passer ici.
Le premier drapeau est en fait un drapeau de lecture seule, qui indique que si un processus ouvre une file d'attente de messages,
il ne peut que lire le message de la file d'attente, mais ne peut pas écrire le message dans la file d'attente de messages.
En d'autres termes, le processus peut seulement effectuer une opération, mais il ne peut pas effectuer d'opération sur une file d'attente de
messages.
Si un processus ouvre une file d'attente de messages avec ce drapeau activé, cela signifie que le processus peut seulement écrire dans la file
d'attente de messages mais ne peut pas la lire.
Si le processus souhaite effectuer des opérations de lecture et d'écriture sur une file d'attente de messages,
il doit ouvrir une file d'attente de messages en définissant ce drapeau qui est read, write, flag, write, create flag (lire, écrire, écrire, créer).
Cet indicateur est utilisé par le processus pour créer une file d'attente de messages.
S'il n'existe pas déjà.
En d'autres termes, si le processus tente de créer une file d'attente de messages et que celle-ci n'existe pas
encore, le processus peut alors activer ce drapeau.
Indique au système d'exploitation que si le message n'existe pas déjà sous ce nom, il faut en créer
un nouveau.
C'est vrai.
De même, le dernier drapeau, le drapeau d'exclusion, est opposé au drapeau de création.
Quelle est donc la fonction du drapeau d'exclusion ?
L'API MQ open échoue si le processus a tenté d'ouvrir une file d'attente de messages.
Ce drapeau n'a aucune signification lorsqu'il est utilisé seul.
Il est toujours utilisé avec le drapeau de création.
C'est vrai.
L'exclusion d'un drapeau est donc en fait le contraire de la création d'un drapeau.
Ainsi, si le processus ouvre une file d'attente de messages à l'aide de l'API d'ouverture de file d'attente de messages
et si l'indicateur spécifié est créer ou ou exclure, cela signifie que le processus tente d'ouvrir une nouvelle file d'attente de messages et si la file d'attente
de messages.
existe déjà, alors le processus ne veut pas ouvrir une file d'attente de messages.
Ce drapeau permet donc de contrôler le comportement d'un processus qui ne doit pas ouvrir une file d'attente de messages
déjà existante.
De même, vous pouvez ajouter d'autres drapeaux en les concaténant à l'aide de l'opérateur Or.
Il s'agit donc de l'opérateur Or.
Le troisième argument que nous transmettons à la deuxième saveur du message est le mode.
Par mode, on entend ici les autorisations.
Si vous avez une idée de l'utilisation du système d'exploitation Linux, vous avez l'habitude de définir les autorisations sur
les fichiers et les répertoires.
De même, pour une file d'attente de messages, le processus de création, c'est-à-dire le processus qui crée une file d'attente de messages,
peut définir des autorisations de fichier pour la file d'attente de messages.
L'autorisation de fichier la plus couramment utilisée pour une file d'attente de messages est donc 0660.
Ainsi, en définissant les autorisations de fichier, le processus propriétaire de la file d'attente de messages contrôle en fait
les privilèges que les autres processus qui ouvriront ultérieurement cette file d'attente de messages auront sur cette file d'attente de messages.
C'est vrai.
Il s'agit de savoir si le processus créateur souhaite que d'autres processus ouvrent une file d'attente de messages en mode lecture ou en mode
écriture uniquement.
ET cetera.
Le processus de création peut donc définir les autorisations de la file d'attente de messages.
Dans ce cas, nous spécifions généralement une des permissions les plus courantes de la file d'attente des messages, à savoir 0660.
Nous n'entrerons pas dans le détail de ces options, car elles ne sont pas pertinentes dans le cadre de ce cours.
Le quatrième argument que nous transmettons à l'API d'ouverture de la file d'attente de messages est en fait un pointeur vers la structure de données
d'attributs.
La structure de données d'attributs est donc une structure de données prédéfinie et j'ai énuméré ici les définitions
de cette structure.
Vous pouvez donc vouloir définir certaines propriétés ou certains attributs d'une file d'attente de messages.
Cette structure vous permet donc de le faire.
Les deux champs que nous pouvons utiliser dans cette structure sont la file d'attente des messages et le message Max.
Il s'agit du nombre maximal de messages pouvant se trouver dans une file d'attente à un moment donné.
Supposons donc qu'un processus d'envoi continue à mettre le message en file d'attente.
Mais le processus de réception ne retire pas le message de la file d'attente.
Que se passera-t-il alors si les messages continuent à s'accumuler dans la file d'attente ?
Ce paramètre permet donc de contrôler cela.
Quel est le nombre maximum de messages pouvant s'accumuler dans une file d'attente ?
La valeur par défaut de ce paramètre est dix.
Vous pouvez donc ouvrir ce fichier et en voir le contenu.
Ce fichier contient la valeur par défaut de ce paramètre.
Le deuxième paramètre que nous utilisons généralement est la taille du message.
Ce paramètre contrôle donc la taille maximale du message qui peut être placé dans la file d'attente.
La valeur par défaut de ce paramètre est donc également de dix octets.
Vous pouvez ouvrir le fichier et voir le contenu de ce fichier sur votre machine Linux et voir ce qu'il
contient.
Les deuxième et troisième paramètres sont donc les paramètres que nous définissons habituellement en tant qu'attributs de la file d'attente de messages.
Les paramètres flack et current message ne sont généralement pas très utiles.
Ainsi, si l'ouverture de la file d'attente de messages réussit, elle renvoie un descripteur de fichier à la file d'attente de messages.
Nous avons donc déjà vu que si l'ouverture de la file d'attente de messages réussit, la valeur de retour de l'API
d'ouverture de la file d'attente de messages est le descripteur de fichier de la file d'attente de messages, qui est représenté par un type de données MQ
underscore T.
À l'aide de cette poignée, nous effectuons toutes les opérations sur la file d'attente de messages tout au long du programme.
Ainsi, une fois que l'API d'ouverture de la file d'attente de messages a réussi, elle nous renvoie cette poignée et, à l'aide de cette poignée, nous effectuons le reste
des opérations sur cette file d'attente de messages, comme l'envoi, la réception ou la fermeture de la file d'attente de messages.
Voyons maintenant un exemple d'utilisation de ce message.
API ouverte de la file d'attente.
Comme nous l'avons dit, l'API ouverte aux messages se décline en deux versions.
Je vous ai donc montré les deux utilisations de l'API ouverte de la file d'attente de messages.
Il s'agit donc de la première utilisation de l'API ouverte de la file d'attente de messages.
Vous pouvez constater que le premier argument de l'API d'ouverture de la file d'attente de messages est le nom de la file d'attente de messages.
Le deuxième argument est le drapeau, que le processus de création essaie en fait de placer sur une file d'attente de messages.
Le processus de création, c'est-à-dire le processus qui a invoqué l'API d'ouverture de la file d'attente de messages, souhaite
donc ouvrir la file d'attente de messages en mode lecture seule.
En d'autres termes, il souhaite uniquement retirer les messages de la file d'attente des messages et.
Le processus veut créer une nouvelle file d'attente de messages et si la file d'attente de messages existe déjà, alors le
processus ne veut pas créer une nouvelle file d'attente de messages.
Ce comportement est donc contrôlé par ces deux drapeaux.
Ensuite, un processus définit les autorisations sur cette file d'attente de messages et ici les attributs sont transmis comme
étant nuls.
En d'autres termes, il est toujours possible de passer un attribut nul.
Ainsi, lorsque le processus passe les attributs null, cela signifie que la file d'attente de messages sera créée
avec les attributs par défaut.
En d'autres termes, le nombre maximal de messages pouvant s'accumuler dans une file d'attente est de dix et la taille maximale d'un
message pouvant être placé dans une file d'attente est de dix octets.
Il s'agit donc des paramètres par défaut.
Mais si vous souhaitez modifier ces paramètres par défaut, vous devez créer une structure dans laquelle vous définirez les attributs
de la file d'attente de messages.
J'ai donc défini les attributs de la file d'attente de messages comme suit.
Ainsi, le nombre maximal de messages pouvant résider dans une file d'attente est de dix, ce qui est la valeur par
défaut uniquement, mais la taille maximale du message pouvant être placé dans la file d'attente est de 496.
Vous pouvez maintenant invoquer une API d'ouverture de file d'attente de messages et vous pouvez simplement transmettre l'adresse de la structure d'attribut comme dernier
argument à l'API d'ouverture de file d'attente de messages.
Notez également que la définition des autorisations de la file d'attente de messages n'a de sens que lorsque le processus crée
réellement une nouvelle file d'attente de messages qui n'existe pas.
C'est vrai.
Si le processus est en train d'ouvrir une file d'attente de messages déjà existante, cela signifie que cette file
d'attente a déjà été créée par un autre processus et que ce processus a dû spécifier des autorisations sur cette file d'attente de
messages.
C'est vrai.
Les autorisations sur la file d'attente des messages n'ont donc de sens que lorsque la file d'attente des messages est fraîchement
créée par un processus.