JMS 연결 팩토리
연결 팩토리는 JMS 클라이언트(JMS API를 사용하는 JMS 프로그램)가 JNDI 제공자(IBM® MQ와 같은 메시징 제공자)와의 연결을 작성하기 위해 사용하는 오브젝트입니다.
IBM MQ 탐색기를 사용하여 연결 팩토리를 작성하고 연결 팩토리가 연결을 작성할 때 사용할 연결 매개변수를 정의할 수 있습니다.
목적지와 마찬가지로 연결 팩토리는 관리 오브젝트이며 네이밍 및 디렉토리 서비스 내의 위치에 정의되는 JNDI 네임스페이스에 저장됩니다. 초기 컨텍스트는 JNDI 네임스페이스의 루트를 정의합니다. IBM MQ 탐색기에서 모든 연결 팩토리는 다음 그림에 표시된 대로 해당 컨텍스트 및 하위 컨텍스트의 연결 팩토리 폴더에 저장됩니다.
그림에서는 Connection Factory 1
이라는 연결 팩토리가 File System Initial Context
라는 초기 컨텍스트의 Connection Factories 폴더에 저장됩니다.
연결 팩토리를 정의할 때에는 JMS 제공자(예: IBM MQ 또는 실시간)로 사용할 메시징 제공자를 선택합니다. 연결 팩토리는 이 메시징 제공자에만 연결을 작성할 수 있습니다. JMS 클라이언트가 다른 메시징 제공자에 연결을 작성하려면 새 연결 팩토리를 작성하고 메시징 제공자를 지정해야 합니다. IBM MQ 8.0에서는 실시간 전송을 사용할 수 없습니다. IBM MQ 8.0을 사용 중인 경우 실시간 전송을 정의할 수는 있지만 연결 작성을 시도하면 실시간 전송이 실패합니다.
도메인 독립 연결 팩토리
두 가지 메시징 도메인인 포인트-투-포인트 메시징 도메인과 발행/구독 메시징 도메인이 있습니다. 특별히 포인트-투-포인트 메시징(QueueConnectionFactory 인터페이스 사용)에 대해 또는 발행/구독 메시징(TopicConnectionFactory 인터페이스 사용)에 대해 연결 팩토리를 작성하여 연결을 작성할 수 있습니다. JNDI에서부터는 도메인 독립적이어서 포인트-투-포인트 및 발행/구독 메시징에 모두 사용할 수 있는 연결 팩토리도 작성할 수 있습니다(ConnectionFactory 인터페이스 사용). 자세한 정보는 연결 팩토리 작성을 참조하십시오.
JMS 애플리케이션에 포인트-투-포인트 메시징 또는 발행/구독 메시징만을 사용하려는 경우 연결 팩토리를 작성할 때 특정 메시징 도메인을 선택할 수 있으며 그러면 도메인 특정 연결 팩토리가 작성됩니다.
그러나 동일한 트랜잭션 아래에서 포인트-투-포인트 및 발행/구독 작업을 모두 수행하려는 경우에는 도메인 독립 연결 팩토리를 작성할 수 있습니다. 예를 들어, JMS 애플리케이션이 토픽(발행/구독 메시징)을 구독한 다음 JMS 애플리케이션이 특정 메시지를 수신할 때 큐(포인트-투-포인트 메시징)에 또 다른 메시지를 송신하도록 할 수 있습니다. 도메인 특정 연결 팩토리를 사용하는 경우에는 동일한 트랜잭션에서 포인트-투-포인트와 발행/구독 작업을 모두 신뢰성 있게 수행하는 것이 어렵습니다. 각 메시징 도메인에 대해 별도의 연결 팩토리를 작성해야 합니다. 이는 포인트-투-포인트 작업은 QueueSession 세션에 의해 제어되는 트랜잭션 아래에서 수행되고 발행/구독 작업은 TopicSession 세션에 의해 제어되는 트랜잭션 아래에서 수행됨을 의미합니다. 송신 및 수신 조치가 모두 발생했는지 또는 모두 백아웃되었는지 확인하기가 어렵습니다.
포인트-투-포인트 작업에 대한 도메인 특정 연결 팩토리를 하나 작성하고 발행/구독 작업에 대한 도메인 특정 연결 팩토리를 하나 작성하는 대신, 둘 모두에 사용할 단일 도메인 독립 연결 팩토리를 작성할 수 있습니다. 이는 연결 팩토리가 하나의 세션을 작성하는 하나의 연결을 작성함을 의미합니다. 세션은 토픽으로부터 MessageConsumer를 작성하고 큐로 MessageProducer를 작성합니다. JMS 애플리케이션이 발행된 메시지를 수신할 때 동일한 세션의 트랜잭션 아래에 있는 큐로 다음 메시지를 송신할 수 있습니다. 그러면 두 조작을 모두 단일 작업 단위로 커미트하거나 롤백할 수 있습니다.
자세한 정보는 IBM Knowledge Center에서 JMS용 IBM MQ 클래스 사용의 내용을 참조하십시오.