L'API suivante que nous allons aborder est celle qui permet à un processus de prendre un message dans la file
d'attente.
L'API est donc une file d'attente de messages avec un trait de soulignement pour la réception.
Le message que vous recevez concerne donc la récupération d'un message dans la file d'attente des messages référencée par le descripteur file d'attente
des messages.
Il s'agit donc de la file d'attente de messages à partir de laquelle nous essayons de récupérer un message.
Le pointeur de message qui est le deuxième argument de cette API est un pointeur vers le tampon
de message vide car MQ receive va remplir ce tampon avec le message reçu.
Par conséquent, le deuxième pointeur de cette API est un pointeur sur le tampon de message vide et la longueur du message
est la taille du tampon en octets.
Le message le plus ancien et le plus prioritaire est supprimé de la file d'attente des messages et transmis au processus
dans le tampon indiqué par le pointeur de message.
Si le processus de réception a transmis un pointeur sur un entier non signé en tant que quatrième argument de
cet appel de fonction, la valeur de cet entier sera fixée à la priorité du message extrait de la file d'attente des
messages.
En d'autres termes, la priorité du message reçu sera stockée dans l'entier pointé par ce pointeur.
Ainsi, le processus de réception peut connaître la priorité du message qui est extrait de la file d'attente.
Ensuite, le comportement par défaut du message que vous recevez est le blocage.
S'il n'y a pas de messages dans la file d'attente, c'est-à-dire si le processus de réception invoque
la fonction de réception de la file d'attente des messages et s'il n'y a pas de messages dans la file d'attente des
messages, cette fonction sera bloquée.
Il s'agit donc du comportement par défaut.
Toutefois, si le processus de réception ne souhaite pas ce comportement, c'est-à-dire lorsque la file d'attente des messages est vide et que le processus
de réception invoque la réception de la file d'attente des messages sur la file d'attente des messages, et si le processus de réception ne souhaite pas que cette fonction
soit bloquée, alors pendant l'ouverture de la file d'attente des messages, c'est-à-dire lorsque le processus de réception a invoqué l'ouverture de la file
d'attente des messages, le processus de réception ne peut pas bloquer cette fonction.
Sur la file d'attente des messages, il aurait dû spécifier cet indicateur dans l'API d'ouverture de la file d'attente des messages.
Cette option modifie donc le comportement par défaut de l'API de réception de la file d'attente de messages.
Ainsi, si la file d'attente des messages est vide, la réception de la file d'attente
des messages est immédiatement renvoyée avec le numéro d'erreur E dès le succès.
L'API de réception de la file d'attente de messages renvoie le nombre d'octets reçus dans le tampon désigné par
le pointeur de message.
Vous pouvez donc constater que la valeur de retour de cette API est le nombre d'octets du message
reçu.
Et pour une raison quelconque, si elle échoue, la valeur de retour de cette API est moins un.