Partager via


Entités JMS (Java Message Service) 2.0

Les applications clientes se connectant à Azure Service Bus Premium et à l’aide de la bibliothèque JMS Azure Service Bus peuvent utiliser les 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 JMSContext classe :

Queue createQueue(String queueName)

Sujets

Les rubriques de JMS sont sémantiquement comparables aux rubriques Service Bus traditionnelles.

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

Topic createTopic(String topicName)

Files d’attente temporaires

Si une application cliente requiert 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 JMSContext classe :

TemporaryQueue createTemporaryQueue()

Rubriques temporaires

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

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

TemporaryTopic createTemporaryTopic()

Abonnements JMS (Java Message Service)

Bien que ces abonnements soient sémantiquement similaires aux abonnements sur les rubriques Service Bus (c'est-à-dire existent sur une rubrique et activent la sémantique de publication/abonnement), la spécification du service de messages Java introduit les concepts des attributs partagés, non partagés, durables et non durables pour un abonnement donné.

Note

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

Seuls les abonnements durables peuvent être créés à l’aide du portail Azure.

Abonnements durables partagés

Un abonnement durable partagé est utilisé lorsque tous les messages publiés sur un sujet doivent être reçus et traités par une application, peu importe si l'application consomme activement de l'abonnement en continu.

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 JMSContext classe :

JMSConsumer createSharedDurableConsumer(Topic topic, String name)

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

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

void unsubscribe(String name)

Abonnements durables non partagés

Comme pour un abonnement durable partagé, un abonnement durable non partagé est utilisé lorsque tous les messages publiés sur un sujet doivent être reçus et traités par une application, peu importe si l'application consomme activement à partir de l'abonnement ou non.

Toutefois, étant donné que cet abonnement est un abonnement non partagé, seule l’application qui a créé l’abonnement peut recevoir de celui-ci.

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

JMSConsumer createDurableConsumer(Topic topic, String name)

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

Note

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

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

void unsubscribe(String name)

Abonnements non permanents partagés

Un abonnement non modifiable partagé est utilisé lorsque plusieurs applications clientes doivent recevoir et traiter des messages d’un seul abonnement, uniquement jusqu’à ce qu’elles consomment/reçoivent activement de celui-ci.

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

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

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 partagés non durables

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, c’est-à-dire le client qui a créé l’abonnement.

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

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)

Note

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

L'abonnement non partagé continue d'exister tant qu'il y a un consommateur actif qui en reçoit.

Sélecteurs de messages

Tout comme les filtres et les actions 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 existent en tant que condition de filtre sur les propriétés d’en-tête du message. Seuls les messages dont les propriétés d’en-tête correspondent à l’expression du sélecteur de message sont remis. Une valeur null ou une chaîne vide indique qu’il n’existe aucun sélecteur de message pour l’abonnement/consommateur JMS.

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

Définition du périmètre client

Les abonnements, tels que spécifiés dans l’API Java Message Service (JMS) 2.0, peuvent ou ne pas être limités à des applications clientes/s spécifiques (identifiées avec les éléments appropriés clientId).

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

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

Note

L’ID client peut être null ou vide, mais il doit correspondre à l’ID client défini sur l’application clientE JMS. Du point de vue d’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 Null ou vide, il est accessible uniquement aux applications clientes dont l’ID client est également défini sur Null ou vide.

Partageabilité

Les abonnements partagés permettent à plusieurs clients/consommateurs (c’est-à-dire aux objets JMSConsumer) de recevoir des messages de leur part.

Note

Les abonnements partagés limités à 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 autorisent uniquement un seul client/consommateur (c’est-à-dire l’objet JMSConsumer) à recevoir des messages de leur part. 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.

Durability

Les abonnements durables sont conservés et continuent de collecter des messages à partir de la rubrique, indépendamment du fait qu’une application (JMSConsumer) consomme des messages à partir de celui-ci.

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

Représentation d’abonnements étendus aux clients

Étant donné que les abonnements jMS (client scoped) doivent coexister avec les abonnements existants, la façon dont les abonnements jMS (client scoped) sont représentés utilise le format suivant.

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

$ Voici 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 :