JMS 연결 팩토리

연결 팩토리는 JMS 클라이언트 ( JMS API를 사용하는 JMS 프로그램) 가 JNDI 제공자 ( IBM® MQ와 같은 메시징 제공자) 와의 연결을 작성하는 데 사용하는 오브젝트입니다.

IBM MQ Explorer 를 사용하여 연결 팩토리를 작성하고 연결 팩토리가 연결을 작성하는 데 사용할 연결 매개변수를 정의할 수 있습니다.

목적지와 같은 연결 팩토리는 관리되는 오브젝트이며 이름 지정 및 디렉토리 서비스 내에 정의된 위치인 JNDI 네임스페이스에 저장됩니다. 초기 컨텍스트는 JNDI 네임스페이스의 루트를 정의합니다. IBM MQ Explorer에서 모든 연결 팩토리는 다음 그림에 표시된 대로 적절한 컨텍스트 및 하위 컨텍스트의 연결 팩토리 폴더에 저장됩니다.

그림에서 Connection Factory 1(이)라는 연결 팩토리는 File System Initial Context(이)라는 초기 컨텍스트의 연결 팩토리 폴더에 저장됩니다.

연결 팩토리 폴더에 있는 연결 팩토리의 화면 캡처.

연결 팩토리를 정의할 때 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 Documentation에서 JMS용 IBM MQ 클래스 사용 을 참조하십시오.