JMS Factory di connessione

Una factory di connessione è un oggetto che un client JMS (un programma JMS che utilizza l'API JMS) utilizza per creare una connessione a un provider JNDI (un provider di messaggistica come IBM® MQ).

È possibile utilizzare IBM MQ Explorer per creare delle factory di connessione e per definire i parametri di connessione che la factory di connessione utilizzerà per creare le connessioni.

Le factory di connessione, come le destinazioni, sono oggetti gestiti e vengono memorizzati in un namespace JNDI , che è un'ubicazione definita all'interno del servizio di denominazione e di directory. Il contesto iniziale definisce la root dello spazio dei nomi JNDI . In IBM MQ Explorer, tutte le factory di connessione sono memorizzate nelle cartelle Factory di connessione nel contesto e nei contesti secondari appropriati, come mostrato nella seguente figura.

Nella figura, la factory di connessione denominata Connection Factory 1 è memorizzata nella cartella Factory di connessione del contesto iniziale denominato File System Initial Context.

Schermata di una factory di connessione nella cartella Factory di connessione.

Quando si definisce una factory di connessione, si seleziona il provider di messaggistica utilizzato come provider JMS (ad esempio IBM MQ or Real-time); una factory di connessione può creare le connessioni solo a tale provider di messaggistica. Per consentire al client JMS di creare connessioni a un provider di messaggistica differente, è necessario creare una nuova factory di connessione e specificare il provider di messaggistica. Il trasporto Real-time non è disponibile in IBM MQ 8.0. Se si sta utilizzando IBM MQ 8.0, è possibile definire il trasporto Real-time, ma non riesce quando viene effettuato un tentativo di creare una connessione.

Factory di connessione indipendenti dal dominio

Ci sono due domini di messaggistica: il dominio point-to-point e il dominio di pubblicazione/sottoscrizione. È possibile creare una factory di connessione per creare connessioni specificamente per messaggi point-to-point (utilizzando l'interfaccia QueueConnectionFactory) oppure specificamente per messaggi di pubblicazione/sottoscrizione (utilizzando l'interfaccia TopicConnectionFactory). Da JNDI, è anche possibile creare factory di connessione indipendenti dal dominio e quindi utilizzabili sia per la messaggistica point-to-point che per la messaggistica di pubblicazione / sottoscrizione (utilizzando l'interfaccia ConnectionFactory). Per ulteriori informazioni, consultare Creazione di una factory di connessione.

Se l'applicazione JMS è progettata per utilizzare solo la messaggistica point-to-point o solo la messaggistica di pubblicazione / sottoscrizione, è possibile selezionare il dominio di messaggistica specifico quando si crea la factory di connessione e viene creata una factory di connessione specifica del dominio.

Se, tuttavia, si desidera eseguire entrambe le messaggistiche nella stessa transazione, è possibile creare una factory di connessione indipendente dal dominio. Ad esempio, si potrebbe desiderare che un'applicazione JMS sottoscriva un argomento (messaggistica di pubblicazione / sottoscrizione), quindi quando l'applicazione JMS riceve un particolare messaggio, invia un altro messaggio a una coda (messaggistica point - to - point). È difficile eseguire in maniera affidabile entrambe le messaggistiche nella stessa transazione se si utilizzano factory di connessione specifiche del dominio: è necessario creare una factory di connessione differente per ciascun dominio di messaggistica; pertanto, la messaggistica point-to-point viene eseguita in una transazione controllata dalla sessione QueueSession, mentre la messaggistica pubblicazione/sottoscrizione viene eseguita in una transazione controllata dalla sessione TopicSession. È difficile assicurare che le azioni di invio e di ricezione abbiano luogo entrambe oppure che venga eseguito il backout di entrambe.

Anziché creare una factory di connessione specifica del dominio per la messaggistica point-to-point e uno per la messaggistica pubblicazione/sottoscrizione, è possibile creare una singola factory di connessione indipendente dal dominio per entrambe. Ciò significa che la factory di connessione crea una singola connessione che crea una singola sessione. La sessione crea un MessageConsumer da un argomento e un MessageProducer in una coda. Quando l'applicazione JMS riceve il messaggio pubblicato, il messaggio successivo può essere inviato alla coda nella transazione della stessa sessione; è possibile eseguire il commit o il rollback di entrambe le operazioni come una singola unità di lavoro.

Per ulteriori informazioni, consultare Utilizzo delle classi IBM MQ per JMS.