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 클래스 사용의 내용을 참조하십시오.