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
.
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.