Entités Java message service (JMS) 2.0

Les applications clientes se connectant à Azure Service Bus Premium et utilisant la bibliothèque JMS Azure Service Bus peuvent se servir des entités ci-dessous.

Files d’attente

Les files d’attente dans JMS sont sémantiquement comparables aux files d’attente Service Bus traditionnelles.

Pour créer une file d’attente, utilisez les méthodes ci-dessous dans la classe JMSContext :

Queue createQueue(String queueName)

Rubriques

Les rubriques dans JMS sont sémantiquement comparables aux files d’attente Service Bus traditionnelles.

Pour créer une rubrique, utilisez les méthodes ci-dessous dans la classe JMSContext :

Topic createTopic(String topicName)

Files d’attente temporaires

Si une application cliente nécessite une entité temporaire qui existe pendant la durée de vie de l’application, elle peut utiliser des files d’attente temporaires. Ces entités sont utilisées dans le modèle Demande-Réponse.

Pour créer une file d’attente temporaire, utilisez les méthodes ci-dessous dans la classe JMSContext :

TemporaryQueue createTemporaryQueue()

Rubriques temporaires

Tout comme les files d’attente temporaires, des rubriques temporaires permettent la publication/l’abonnement via une entité temporaire qui existe pendant la durée de vie de l’application.

Pour créer une rubrique temporaire, utilisez les méthodes ci-dessous dans la classe JMSContext :

TemporaryTopic createTemporaryTopic()

JMS (Java Message Service) et abonnements

Bien qu’elles soient sémantiquement similaires aux Abonnements (qui, en fait, existent sur une rubrique et activent la sémantique de publication/abonnement), les spécifications de Java Message Service présentent les concepts d’attributs Partagé, Non partagé, **Durable et Non durable pour un abonnement donné.

Notes

Les abonnements ci-dessous sont disponibles dans le niveau Azure Service Bus Premium pour les applications clientes se connectant à Azure Service Bus à l’aide de la bibliothèque JMS Azure Service Bus.

Seuls les abonnements durables peuvent être créés avec le portail Azure.

Abonnements durables partagés

Un abonnement durable partagé est utilisé lorsque tous les messages publiés sur une rubrique doivent être reçus et traités par une application, que l’application consomme ou non activement l’abonnement à tout moment.

Toute application authentifiée pour recevoir des messages de Service Bus peut en recevoir de l’abonnement durable partagé.

Pour créer un abonnement durable partagé, utilisez les méthodes ci-dessous sur la classe JMSContext

JMSConsumer createSharedDurableConsumer(Topic topic, String name)

JMSConsumer createSharedDurableConsumer(Topic topic, String name, String messageSelector)

L’abonnement durable partagé continue à exister, sauf s’il est supprimé à l’aide de la méthode unsubscribe sur la classe JMSContext.

void unsubscribe(String name)

Abonnements durables non partagés

À l’instar d’un abonnement durable partagé, un abonnement durable non partagé est utilisé lorsque tous les messages publiés sur une rubrique doivent être reçus et traités par une application, que l’application consomme ou non activement l’abonnement.

Toutefois, étant donné qu’il s’agit d’un abonnement non partagé, seule l’application qui a créé l’abonnement peut recevoir des messages de ce dernier.

Pour créer un abonnement durable non partagé, utilisez les méthodes ci-dessous à partir de la classe JMSContext

JMSConsumer createDurableConsumer(Topic topic, String name)

JMSConsumer createDurableConsumer(Topic topic, String name, String messageSelector, boolean noLocal)

Notes

La fonctionnalité noLocal n’est actuellement pas prise en charge et est ignorée.

L’abonnement durable non partagé continue à exister, sauf s’il est supprimé à l’aide de la méthode unsubscribe sur la classe JMSContext.

void unsubscribe(String name)

Abonnements non durables partagés

Un abonnement partagé non durable est utilisé lorsque plusieurs applications clientes doivent recevoir et traiter des messages d’un seul abonnement, uniquement jusqu’à ce qu’ils les consomment/les reçoivent activement.

Étant donné que l’abonnement n’est pas durable, il n’est pas persistant. Les messages ne sont pas reçus par cet abonnement lorsqu’il n’y a aucun consommateur actif.

Pour créer un abonnement partagé non durable, créez un JmsConsumer comme indiqué dans les méthodes ci-dessous de la classe JMSContext

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName)

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName, String messageSelector)

L’abonnement partagé non durable continue d’exister jusqu’à ce qu’il y ait des consommateurs actifs qui le reçoivent.

Abonnements non durables non partagés

Un abonnement non partagé non durable est utilisé lorsque l’application cliente doit recevoir et traiter des messages d’un seul abonnement, uniquement jusqu’à ce qu’elle les consomme/les reçoive activement. Un seul consommateur peut exister sur cet abonnement, autrement dit le client qui a créé l’abonnement.

Étant donné que l’abonnement n’est pas durable, il n’est pas persistant. Les messages ne sont pas reçus par cet abonnement lorsqu’il n’y a aucun consommateur actif.

Pour créer un abonnement non-partagé non durable, créez un JMSConsumer comme indiqué dans les méthodes ci-dessous de la classe JMSContext

JMSConsumer createConsumer(Destination destination)

JMSConsumer createConsumer(Destination destination, String messageSelector)

JMSConsumer createConsumer(Destination destination, String messageSelector, boolean noLocal)

Notes

La fonctionnalité noLocal n’est actuellement pas prise en charge et est ignorée.

L’abonnement non partagé non durable continue d’exister jusqu’à ce qu’il y ait un consommateur actif qui le reçoit.

Sélecteurs de messages

À l’instar des filtres et actions qui existent pour les abonnements Service Bus standard, les sélecteurs de messages existent pour les abonnements JMS.

Les sélecteurs de messages peuvent être configurés sur chacun des abonnements JMS et exister sous la forme d’une condition de filtre sur les propriétés d’en-tête de message. Seuls les messages avec des propriétés d’en-tête correspondant à l’expression du sélecteur de messages sont remis. La valeur Null ou une chaîne vide indique qu’il n’existe aucun sélecteur de message pour l’abonnement/le consommateur JMS.

Concepts supplémentaires pour les abonnements Java Message Service (JMS) 2.0

Étendue du client

Les abonnements, tels qu’ils sont spécifiés dans l’API Java Message Service (JMS) 2.0, peuvent être ou non étendus à une ou à des applications clientes spécifiques (identifiées avec l’élément clientId approprié).

Une fois l’abonnement délimité, il n’est accessible qu’à partir d’applications clientes qui ont le même ID client.

Toute tentative d’accès à un abonnement délimité sur un ID client particulier (par exemple, clientId1) depuis une application ayant un autre ID client (par exemple, clientId2) entraîne la création d’un autre abonnement délimité sur l’autre ID client (clientId2).

Notes

L’ID client peut prendre la valeur null ou être vide, mais il doit correspondre à l’ID client défini sur l’application cliente JMS. Pour Azure Service Bus, un ID client null et un ID client vide ont le même comportement.

Si l’ID client est défini sur la valeur null ou qu’il est vide, il n’est accessible qu’aux applications clientes dont l’ID client est également défini sur null ou est vide.

Partageabilité

Les abonnements partagés permettent à plusieurs clients/consommateurs (autrement dit, des objets JMSConsumer) de recevoir les messages qu’ils envoient.

Notes

Les abonnements partagés dont l’étendue correspond à un ID client spécifique sont toujours accessibles par plusieurs clients/consommateurs (c’est-à-dire des objets JMSConsumer), mais chacune des applications clientes doit avoir le même ID client.

Les abonnements non partagés n’autorisent qu’un seul client/consommateur (c’est-à-dire l’objet JMSConsumer) à recevoir les messages qu’ils envoient. Si un objet JMSConsumer est créé sur un abonnement non partagé alors qu’il a déjà une écoute JMSConsumer active des messages qu’il contient, une exception JMSException est déclenchée.

Durabilité

Les abonnements durables sont conservés et continuent à collecter des messages à partir de la rubrique, qu’une application (JMSConsumer) consomme ou non des messages à partir de celle-ci.

Les abonnements non durables ne sont pas rendus persistants et recueillent des messages à partir de la rubrique tant qu’une application (JMSConsumer) utilise des messages de celle-ci.

Représentation d’abonnements étendus aux clients

Étant donné que les abonnements (JMS) étendus aux clients doivent coexister avec les abonnements existants, la façon dont les abonnements étendus aux clients (JMS) sont représentés suit le format ci-dessous.

  • <NOM-ABONNEMENT>$<ID-CLIENT>$D (pour les abonnements durables)
  • <NOM-ABONNEMENT>$<ID-CLIENT>$ND (pour les abonnements non durables)

Ici, $ est le délimiteur.

Étapes suivantes

Pour plus d’informations et des exemples d’utilisation de la messagerie Service Bus, consultez les rubriques avancées suivantes :