Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Identificando Tópicos

Nos exercícios para Tópicos fizemos duas novas configurações nas classes além da identificação do arquivo properties

Nomeamos um cliente

connection.setClientID("estoque");

e trocamos o tipo da Session para uma createDurableSubscriber que recebe como parâmetros dois argumentos, um Topic e um Name.

MessageConsumer consumer = session.createDurableSubscriber(topico, "assinatura");

No meu exercício tudo rodou perfeitamente a dúvida ficou somente na explicação, pois nomeie como "assinatura" como o tópico identifica esses dois consumers apenas dando o nome como assinatura? Poderia nomear com qualquer outro nome? Apenas colocamdo esse mesmo outro nome nos consumer ele ja saberia que são dois consumers de um determinado Produtor? Essa parte ficou um pouco confusa!!!

1 resposta
solução!

Olá, Guilherme.

O que define um durable subscriber é o par:

  • clientID da Connection
  • name do Consumer

No exercício, temos dois durable subscribers: - estoque + assinatura - comercial + assinatura

No Javadoc do JMS, temos a seguinte frase:

If an unshared durable subscription already exists with the same name and client identifier, and there is a consumer already active (i.e. not closed) on the durable subscription, then a JMSException will be thrown.

Ou seja, uma JMSException será lançada se tiver um consumidor já ativo com o mesmo clientID da Connection e name do Subscriber.