Entidades do serviço de mensagens Java (JMS) 2.0

As aplicações cliente que se ligam ao Azure Service Bus Premium e utilizam o Azure Service Bus biblioteca JMS podem utilizar as entidades abaixo.

Filas

As filas no JMS são semanticamente comparáveis com as filas tradicionais do Service Bus.

Para criar uma Fila, utilize os métodos abaixo na JMSContext classe -

Queue createQueue(String queueName)

Tópicos

Os tópicos no JMS são semanticamente comparáveis com os tópicos tradicionais do Service Bus.

Para criar um Tópico, utilize os métodos abaixo na JMSContext classe -

Topic createTopic(String topicName)

Filas temporárias

Se uma aplicação cliente exigir uma entidade temporária que exista durante a duração da aplicação, pode utilizar Filas temporárias. Estas entidades são utilizadas no padrão Pedido-Resposta .

Para criar uma fila temporária, utilize os métodos abaixo na JMSContext classe -

TemporaryQueue createTemporaryQueue()

Tópicos temporários

Tal como as Filas Temporárias, existem Tópicos Temporários para ativar a publicação/subscrição através de uma entidade temporária que existe durante a duração da aplicação.

Para criar um tópico temporário, utilize os métodos abaixo na JMSContext classe -

TemporaryTopic createTemporaryTopic()

Subscrições do serviço de mensagens Java (JMS)

Embora sejam semanticamente semelhantes às Subscrições (ou seja, existem num tópico e ativam a semântica de publicação/subscrição), a especificação do Serviço de Mensagens Java apresenta os conceitos de atributos Partilhados, Não Partilhados, ** Duráveis e Não Duráveis para uma determinada subscrição.

Nota

As subscrições abaixo estão disponíveis no escalão Azure Service Bus Premium para aplicações cliente que se ligam a Azure Service Bus através da biblioteca JMS Azure Service Bus.

Apenas as subscrições duráveis podem ser criadas com o portal do Azure.

Subscrições duráveis partilhadas

Uma subscrição durável partilhada é utilizada quando todas as mensagens publicadas num tópico devem ser recebidas e processadas por uma aplicação, independentemente de a aplicação estar sempre a consumir a partir da subscrição.

Qualquer aplicação autenticada para receber do Service Bus pode receber da subscrição durável partilhada.

Para criar uma subscrição durável partilhada, utilize os métodos abaixo na JMSContext classe –

JMSConsumer createSharedDurableConsumer(Topic topic, String name)

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

A subscrição durável partilhada continua a existir, a menos que seja eliminada com o unsubscribe método na JMSContext classe.

void unsubscribe(String name)

Subscrições duráveis não partilhadas

Tal como uma subscrição durável partilhada, é utilizada uma subscrição durável não partilhada quando todas as mensagens publicadas num tópico devem ser recebidas e processadas por uma aplicação, independentemente de a aplicação estar a consumir ativamente a partir da subscrição.

No entanto, uma vez que se trata de uma subscrição não partilhada, apenas a aplicação que criou a subscrição pode receber da mesma.

Para criar uma subscrição durável não partilhada, utilize os métodos abaixo da JMSContext classe -

JMSConsumer createDurableConsumer(Topic topic, String name)

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

Nota

A noLocal funcionalidade não é suportada e ignorada.

A subscrição durável não partilhada continua a existir, a menos que seja eliminada com o unsubscribe método na JMSContext classe.

void unsubscribe(String name)

Subscrições não duráveis partilhadas

Uma subscrição não durável partilhada é utilizada quando várias aplicações cliente precisam de receber e processar mensagens de uma única subscrição, apenas até que estejam a consumir/receber ativamente da mesma.

Uma vez que a subscrição não é durável, não é persistente. As mensagens não são recebidas por esta subscrição quando não existem consumidores ativos na mesma.

Para criar uma subscrição não durável partilhada, crie uma JmsConsumer , conforme mostrado nos métodos abaixo da JMSContext classe –

JMSConsumer createSharedConsumer(Topic topic, String sharedSubscriptionName)

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

A subscrição partilhada não durável continua a existir até que existam consumidores ativos a receber da mesma.

Subscrições não duráveis não partilhadas

É utilizada uma subscrição não durável não partilhada quando a aplicação cliente precisa de receber e processar mensagens de uma subscrição, apenas até que esteja a consumir ativamente a partir da mesma. Apenas um consumidor pode existir nesta subscrição, ou seja, o cliente que criou a subscrição.

Uma vez que a subscrição não é durável, não é persistente. As mensagens não são recebidas por esta subscrição quando não existe nenhum consumidor ativo na mesma.

Para criar uma subscrição não partilhada e não durável, crie uma JMSConsumer , conforme mostrado nos métodos abaixo da JMSContext classe –

JMSConsumer createConsumer(Destination destination)

JMSConsumer createConsumer(Destination destination, String messageSelector)

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

Nota

A noLocal funcionalidade não é suportada e ignorada.

A subscrição não partilhada não durável continua a existir até existir um consumidor ativo a receber da mesma.

Seletores de mensagens

Tal como existem Filtros e Ações para subscrições regulares do Service Bus, existem Seletores de Mensagens para Subscrições JMS.

Os seletores de mensagens podem ser configurados em cada uma das subscrições JMS e existem como uma condição de filtro nas propriedades do cabeçalho da mensagem. Só são entregues mensagens com propriedades de cabeçalho correspondentes à expressão do seletor de mensagens. Um valor de cadeia nula ou vazia indica que não existe um seletor de mensagens para a Subscrição/Consumidor do JMS.

Conceitos adicionais para subscrições do Java Message Service (JMS) 2.0

Âmbito do cliente

As subscrições, conforme especificado na API do Serviço de Mensagens Java (JMS) 2.0, podem ou não estar no âmbito de aplicações/s cliente específicas (identificadas com a adequada clientId).

Assim que a subscrição estiver no âmbito, só pode ser acedida a partir de aplicações cliente que tenham o mesmo ID de cliente.

Qualquer tentativa de aceder a uma subscrição no âmbito de um ID de cliente específico (por exemplo, clientId1) a partir de uma aplicação com outro ID de cliente (por exemplo, clientId2) levará à criação de outra subscrição no âmbito do outro ID de cliente (clientId2).

Nota

O ID de cliente pode ser nulo ou estar vazio, mas tem de corresponder ao ID de cliente definido na aplicação cliente JMS. Do ponto de vista Azure Service Bus, um ID de cliente nulo e um ID de cliente vazio têm o mesmo comportamento.

Se o ID de cliente estiver definido como nulo ou vazio, só é acessível a aplicações cliente cujo ID de cliente também esteja definido como nulo ou vazio.

Capacidade de partilha

As subscrições partilhadas permitem que vários clientes/consumidores (ou seja, objetos JMSConsumer) recebam mensagens dos mesmos.

Nota

As subscrições partilhadas no âmbito de um ID de cliente específico ainda podem ser acedidas por vários clientes/consumidores (ou seja, objetos JMSConsumer), mas cada uma das aplicações cliente tem de ter o mesmo ID de cliente.

As subscrições não partilhadas permitem que apenas um único cliente/consumidor (ou seja, objeto JMSConsumer) receba mensagens dos mesmos. Se um JMSConsumer for criado numa subscrição não partilhada enquanto já tiver mensagens de escuta ativas JMSConsumer , é emitido um JMSException .

Durabilidade

As subscrições duráveis persistem e continuam a recolher mensagens do tópico, independentemente de uma aplicação (JMSConsumer) estar a consumir mensagens do mesmo.

As subscrições não duráveis não são persistentes e recolhem mensagens do tópico, desde que uma aplicação (JMSConsumer) esteja a consumir mensagens do mesmo.

Representação de subscrições no âmbito do cliente

Dado que as subscrições com âmbito de cliente (JMS) têm de coexistir com as subscrições existentes, a forma como as subscrições com âmbito de cliente (JMS) são representadas segue o formato abaixo.

  • <SUBSCRIPTION-NAME>$<CLIENT-ID>$D (para subscrições duráveis)
  • <SUBSCRIPTION-NAME>$<CLIENT-ID>$ND (para subscrições não duráveis)

Aqui está $ o delimitador.

Passos seguintes

Para obter mais informações e exemplos de utilização de mensagens do Service Bus, veja os seguintes tópicos avançados: