JMS connection factories

Uma fábrica de conexão é um objeto que um cliente JMS (um programa JMS que usa a API JMS ) usa para criar uma conexão com um provedor JNDI (um provedor de mensagens como IBM® MQ).

Você pode usar IBM MQ Explorer para criar fábricas de conexão e para definir os parâmetros de conexão que a fábrica de conexão utilizará para criar conexões.

As fábricas de conexão, como destinos, são objetos administrados e são armazenados em um espaço de nomes JNDI , que é um local definido dentro do serviço de nomenclatura e de diretórios. O contexto inicial define a raiz do espaço de nomes JNDI . Em IBM MQ Explorer, todas as fábricas de conexão são armazenadas em pastas Connection Factories no contexto e subcontextos apropriados, como mostrado na figura a seguir.

Na figura, a connection factory chamada Connection Factory 1 é armazenada na pasta Connection Factories do contexto inicial chamado File System Initial Context.

Captura de tela de uma fábrica de conexão na pasta Connection Factories.

Quando você define uma fábrica de conexão, você seleciona o provedor de mensagens que é usado como o provedor JMS (por exemplo, IBM MQ ou Real-time); uma fábrica de conexão pode criar conexões apenas com aquele provedor de mensagens. Para que o cliente JMS crie conexões com um provedor de mensagens diferente, você deve criar uma nova fábrica de conexões e especificar o provedor de mensagens. O transporte em tempo real não está disponível em IBM MQ 8.0. Se você estiver usando IBM MQ 8.0 você pode definir o transporte Real-time, mas ele falha quando uma tentativa é feita para criar uma conexão.

Connection Factories Independentes do Domínio

Há dois domínios do sistema de mensagens: o domínio do sistema de mensagens ponto a ponto e o domínio do sistema de mensagens de publicação/assinatura. Você pode criar um connection factory para criar conexões especificamente para o sistema de mensagens ponto a ponto (utilizando a interface QueueConnectionFactory) ou especificamente para o sistema de mensagens de publicação/assinatura (utilizando a interface TopicConnectionFactory). A partir de JNDI, você também pode criar fábricas de conexão que são de domínio independente e assim podem ser usadas para o ponto-a-ponto e mensagens de publicação / assinatura (usando a interface do ConnectionFactory). Para obter mais informações, consulte Criando uma fábrica de conexão.

Se o aplicativo JMS for destinado a usar apenas mensagens ponto a ponto ou apenas publicar / assinar mensagem, você poderá selecionar o domínio de mensagens específico quando você criar a fábrica de conexão e uma fábrica de conexão específica de domínio é criada.

Se, no entanto, você quiser executar ambos os trabalhos, ponto a ponto e publicação/assinatura na mesma transação, poderá criar um connection factory independente do domínio. Por exemplo, você pode desejar que um aplicativo JMS assine um tópico (publish/subscribe messaging) então, quando o aplicativo JMS receber uma mensagem em particular, ele envia outra mensagem para uma fila (mensagem ponto a ponto). É difícil executar com segurança os trabalhos de ponto a ponto e de publicação/assinatura na mesma transação se você usar connection factories específicos do domínio: você deve criar um connection factory separado para cada domínio do sistema de mensagens, o que significa que o trabalho de ponto a ponto é feito em uma transação que é controlada pela sessão QueueSession e o trabalho de publicação/assinatura é feito em uma transação que é controlada pela sessão TopicSession. É difícil assegurar que as ações de envio e recebimento aconteceram ou que ambas foram restauradas.

Em vez de criar um connection factory específico do domínio para o trabalho de ponto a ponto e um connection factory específico do domínio para o trabalho de publicação/assinatura, é possível criar um único connection factory independente do domínio para ambos. Isso significa que o connection factory cria uma conexão, que cria uma sessão. A sessão cria um MessageConsumer a partir de um tópico e um MessageProducer para uma fila. Quando o aplicativo JMS recebe a mensagem publicada, a próxima mensagem pode ser enviada para a fila sob a mesma transação da sessão; ambas as operações podem então ser cometidas ou retroceadas como uma única unidade de trabalho.

Para obter mais informações, consulte Usando as classes IBM MQ para JMS.