메시지 플로우 노드에 대한 개념 주제를 읽으십시오.
WebSphere Message Broker는 메시지 플로우 내에서 사용할 수 있는 다수의 메시지 처리 노드를 포함합니다. 또한 사용자 정의 노드로 알려진 사용자 소유의 노드를 정의하는 데 사용할 수 있는 인터페이스를 제공합니다.
사용할 노드에 대한 결정은 메시지에 대해 수행할 처리에 따라 달라집니다. 내장 노드는 여러 범주에서 고려할 수 있으며 이 범주에 그룹화되어 있는 Workbench에 표시됩니다(이 그룹화가 노드의 조작에는 영향을 주지 않더라도). 동일한 방법으로 사용자 정의 노드를 분류할 수도 있습니다. 범주는 다음과 같습니다.
WebSphere
Message Broker 버전
6.0에서는
MQeInput 노드를 포함하는 메시지 플로우를
더 이상 사용하지 않습니다. 메시지 플로우를 다시 설계하여
MQe 노드를 제거하고 사용자의 고유 스펙에 구성되고 MQe 게이트웨이 구성에 통합된
MQ 노드로 바꾸십시오. 자세한 정보는 WebSphere MQ Everyplace 노드를 포함하는 메시지 플로우 이주를 참조하십시오.
Input 노드의 인스턴스는 in 터미널을 표시합니다. 예를 들면, 하나의 입력 노드 인스턴스를 포함하는 경우, 서브플로우 아이콘은 하나의 in 터미널을 표시합니다. 이를 통해 다른 노드를 연결할 때와 동일한 방법으로 기본 플로우의 다른 노드에 연결할 수 있습니다.
최소 하나의 입력 노드를 갖고 있는 메시지 플로우만 전개할 수 있습니다. 메시지 플로우에 입력 노드가 포함되어 있지 않으면 브로커 아카이브 파일에 이를 추가할 수 없습니다. 입력 노드는 기본 플로우 또는 기본 플로우에 임베드된 메시지 플로우에 있을 수 있습니다.
메시지 플로우에 둘 이상의 입력 노드를 사용할 수 있습니다. 자세한 정보는 둘 이상의 입력 노드 사용을 참조하십시오.
WebSphere
Message Broker 버전
6.0에서는
MQeOutput 노드를 포함하는 메시지 플로우를
더 이상 사용하지 않습니다. 메시지 플로우를 다시 설계하여
MQe 노드를 제거하고 사용자의 고유 스펙에 구성되고 MQe 게이트웨이 구성에 통합된
MQ 노드로 바꾸십시오. 자세한 정보는 WebSphere MQ Everyplace 노드를 포함하는 메시지 플로우 이주를 참조하십시오.
Output 노드의 인스턴스는 out 터미널을 표시합니다. 예를 들면, 두 개의 Output 노드 인스턴스를 포함하는 경우, 서브플로우 아이콘은 두 개의 out 터미널을 표시합니다. 이를 통해 다른 노드를 연결할 때와 동일한 방법으로 기본 플로우의 다른 노드에 연결할 수 없습니다.
대부분의 엔터프라이즈에는 여러 해에 걸쳐 서로 다른 프로그래밍 언어 및 서로 다른 통신 방법을 사용하여 여러 시스템에서 개발된 응용프로그램이 있습니다. WebSphere Message Broker에서는 한 형식에서 다른 형식으로 메시지를 변환하는 메시지 플로우를 구성할 수 있는 기능을 제공하므로 응용프로그램이 이러한 차이점을 이해할 필요가 없습니다.
예를 들면, 개인 이름이 여러 응용프로그램에서 다양한 형식으로 보유되어 있습니다. 성 또는 이름, 중간 머리글자 사용 여부, 대문자 또는 소문자: 이는 간단한 순서의 차이입니다. 메시지 플로우가 각 응용프로그램의 요구사항을 알 수 있도록 구성할 수 있기 때문에 송신 및 수신 응용프로그램을 수정하지 않고도 각 메시지를 올바른 형식으로 변환할 수 있습니다.
메시지의 컨텐츠에 대해 작업하여 여러 가지 방법으로 메시지를 갱신할 수 있습니다. 여기서 선택할 수 있는 내용은 메시지 플로우가 사전정의된(모델화된) 메시지 또는 자체 정의 메시지(예: XML)를 핸들링해야 하는지 아니면 둘 다를 핸들링해야 하는지에 따라 달라질 수 있습니다.
메시지 플로우는 메시지를 완전하게 다시 빌드하거나 메시지를 다른 형식으로 변환하거나(형식은 필드 순서, 바이트 순서, 언어 등을 의미), 메시지에서 컨텐츠를 제거하거나 특정 데이터를 메시지에 도입할 수 있습니다. 예를 들면, 노드는 데이터베이스와 상호작용하여 추가 정보를 검색하거나 메시지 사본(전체 또는 일부)을 오프라인으로 처리할 수 있도록 데이터베이스에 저장할 수 있습니다.
다음 예에서는 중요한 메시지 변환이 이루어지는 방법을 보여줍니다.
이러한 노드를 사용하여 서로 간에 상호작용하는 메시지 플로우를 작성할 수도 있습니다. 한 메시지 플로우의 디폴트 조작이 다른 메시지 플로우의 조작에 영향을 주지는 않지만, 데이터베이스 등과 같은 외부 소스에 정보를 저장 및 검색할 수 있도록 메시지 플로우를 구성하여 이런 상황을 강제 수행할 수 있습니다.
ESQL 편집기를 사용하여 이 노드에 고유하며, 메시지 또는 데이터베이스에 대해 수행할 조치를 정의하는 명령문이 포함된 ESQL 모듈을 작성하십시오. 다른 유형의 노드에서 Compute 노드를 위해 개발한 ESQL 코드를 사용하지 마십시오.
노드 등록 정보에 지정한 데이터 소스에 대한 사용자 및 암호 정보를 지정함으로써, 모든 노드를 사용하여 데이터베이스에 액세스하는 방법을 제어할 수 있습니다. 이 값을 초기화하고 유지보수하려면 mqsisetdbparms 명령을 사용하십시오.
노드 등록 정보에 지정한 데이터 소스에 대한 사용자 및 암호 정보를 지정함으로써, 모든 노드를 사용하여 데이터베이스에 액세스하는 방법을 제어할 수 있습니다. 이 값을 초기화하고 유지보수하려면 mqsisetdbparms 명령을 사용하십시오.
메시지 가공 요구사항이 복잡하면 단일 Compute 노드 내에서 가공을 완료합니다. 브로커는 각 Compute 노드에 있는 항목에 대한 메시지를 구문 분석하기 때문에 몇 개의 복잡한 Compute 노드를 수행하는 것이 여러 개의 간단한 노드를 수행하는 것보다 좋습니다.
노드 등록 정보에 지정한 데이터 소스에 대한 사용자 및 암호 정보를 지정함으로써, 모든 노드를 사용하여 데이터베이스에 액세스하는 방법을 제어할 수 있습니다. 이 값을 초기화하고 유지보수하려면 mqsisetdbparms 명령을 사용하십시오.
메시징 편집기를 사용하여 Mapping 노드의 사전정의된 메시지에서 단순 가공을 수행하기 위한 맵핑을 개발할 수 있습니다. 다른 유형의 노드에서 맵핑 노드를 위해 개발한 맵핑을 사용하지 마십시오.
맵핑 편집기를 사용하여 Extract 노드의 사전정의된 메시지에서 단순 가공을 수행하기 위한 맵핑을 개발할 수 있습니다. 다른 유형의 노드에서 Extract 노드를 위해 개발한 맵핑을 사용하지 마십시오.
이 노드는 광범위한 기능을 가진 매우 유연한 인터페이스를 제공합니다. 또한 상호작용이 트랜잭션에 관여하는 방법을 제어하는 데 사용할 수 있는 등록 정보도 있습니다.
노드 등록 정보에 지정한 데이터 소스에 대한 사용자 및 암호 정보를 지정함으로써, 모든 노드를 사용하여 데이터베이스에 액세스하는 방법을 제어할 수 있습니다. 이 값을 초기화하고 유지보수하려면 mqsisetdbparms 명령을 사용하십시오.
이 노드에서는 데이터베이스만 갱신할 수 있으며 메시지 컨텐츠는 갱신할 수 없습니다. 메시지 컨텐츠를 갱신하려면 Compute 또는 Mapping 노드를 사용하십시오.
노드 등록 정보에 지정한 데이터 소스에 대한 사용자 및 암호 정보를 지정함으로써, 모든 노드를 사용하여 데이터베이스에 액세스하는 방법을 제어할 수 있습니다. 이 값을 초기화하고 유지보수하려면 mqsisetdbparms 명령을 사용하십시오.
이 노드에서는 데이터베이스만 갱신할 수 있으며 메시지 컨텐츠는 갱신할 수 없습니다. 메시지 컨텐츠를 갱신하려면 Compute 또는 Mapping 노드를 사용하십시오.
노드 등록 정보에 지정한 데이터 소스에 대한 사용자 및 암호 정보를 지정함으로써, 모든 노드를 사용하여 데이터베이스에 액세스하는 방법을 제어할 수 있습니다. 이 값을 초기화하고 유지보수하려면 mqsisetdbparms 명령을 사용하십시오.
이 노드에서는 데이터베이스만 갱신할 수 있으며 메시지 컨텐츠는 갱신할 수 없습니다. 메시지 컨텐츠를 갱신하려면 Compute 또는 Mapping 노드를 사용하십시오.
XMLT 스타일 시트를 사용하여 입력 XML 메시지를 다른 형식으로 변환하려면 XMLTransformation 노드를 사용하십시오. 반드시 데이터를 XML 메시지로 구문 분석할 수 있어야 합니다. 변환 결과는 BLOB 메시지 출력입니다. 스타일시트는 시트 안에 정의된 규칙을 사용하여 데이터를 정렬할 수 있습니다. 특정 기준에 따라 포함하거나 제외할 데이터 요소를 선택하고 데이터를 다른 데이터 형식으로 변환할 수 있습니다.
Xalan-Java 변환 엔진(Apache Xalan-java XSLT 프로세서)은 기본 변환 엔진으로 사용됩니다. XMLT에 대한 자세한 내용은 W3C XSL Transformations을 참조하십시오.
양식 스타일과 XML 파일을 브로커 실행 그룹에 전개하여 스타일시트와 XML 파일 유지보수를 쉽게 수행할 수 있습니다.
MQJMSTransform 노드를 사용하여 메시지를 레거시 메시지 플로우로 송신하고 WebSphere MQ JMS 및 WebSphere Message Broker publish subscribe와 상호작용할 수 있습니다.
MQJMSTransform 노드를 사용하여 메시지를 레거시 메시지 플로우로 송신하고 WebSphere MQ JMS 및 WebSphere Message Broker publish subscribe와 상호작용할 수 있습니다.
Publication 노드에 연결된 MQInput 노드로 구성되고 WebSphere MQ MQ 전송을 통해 JMS를 사용하는 publish/subscribe 메시지 플로우를 바꾸려면 MQOptimizedFlow 노드를 사용합니다. MQOptimizedFlow 노드는 z/OS 시스템에서 사용할 수 없습니다.
성능을 개선하려면, 특히 단일 publisher가 단일 subscriber에 대해 지속 publication을 생성할 경우 MQOptimizedFlow 노드를 사용하십시오.
노드 등록 정보에 지정한 데이터 소스에 대한 사용자 및 암호 정보를 지정함으로써, 모든 노드를 사용하여 데이터베이스에 액세스하는 방법을 제어할 수 있습니다. 이 값을 초기화하고 유지보수하려면 mqsisetdbparms 명령을 사용하십시오.
다음 표에는 이 노드가 갱신할 수 있는 내용이 요약되어 있습니다.
노드 | 데이터베이스 갱신 여부 | 메시지 갱신 여부 | 로컬 환경 갱신 여부 | 메시지 세트 필요 여부 |
---|---|---|---|---|
Compute | 예 | 예 | 예 | 아니오 |
Database | 예 | 아니오 | 예 | 아니오 |
DataDelete | 예 | 아니오 | 예 | 예 |
DataInsert | 예 | 아니오 | 예 | 예 |
DataUpdate | 예 | 아니오 | 예 | 예 |
Extract | 예 | 예 | 예 | 예 |
Mapping | 예 | 예 | 예 | 예 |
Warehouse | 예 | 아니오 | 예 | 예 |
플로우가 메시지를 처리하는 방법을 결정하기 위해 여러 가지 방법으로 메시지 플로우 내의 제어 플로우 및 순서를 결정하는 노드를 사용할 수 있습니다. 메시지 플로우 내의 이벤트, 발생 빈도 및 시간을 판별하는 노드(TimeoutControl 및 TimeoutNotification)를 사용할 수도 있습니다. 메시지가 거치는 라우트를 통해 메시지에 대해 어떠한 변환이 수행될 지를 정확히 판별할 수는 있지만 라우팅은 메시지 변환과 무관합니다.
예를 들면, 송금 응용프로그램은 항상 메시지를 다른 응용프로그램으로 송신합니다. 고가의 트랜잭션이 모두 기록될 수 있도록 전송 값이 $10,000 이상인 모든 메시지는 두 번째 응용프로그램으로 송신되도록 결정할 수 있습니다.
다른 예로, 전국 자동차 클럽에서는 임계값 이상으로 주문하는 특정 구성원에게 최고의 서비스를 제공합니다. 대부분의 주문은 일반 채널을 통해 라우트되지만 멤버쉽 번호와 주문 값이 특정 기준에 맞으면 이 주문은 특수하게 처리됩니다.
메시지 처리 시 추가 라우팅 정보를 메시지에 빌드하여 더욱 동적인 라우팅 옵션을 설정할 수도 있습니다. 메시지에 설정된 값(목적지)에 따라 메시지를 수신하도록 선택적 규칙 세트가 설정됩니다. 추가된 메시지 컨텐츠로 정해진 순서대로 하나 이상의 선택적 규칙 세트로 메시지가 처리되는 규칙을 설정할 수 있습니다.
다음의 노드를 사용하여 메시지가 메시지 플로우를 따르는 라우트에 대해 결정하십시오.
Validate 노드가 WebSphere Message Broker 버전 6.0 및 후속 릴리스에서 더 이상 사용되지 않는 Check 노드를 대체합니다. Validate 노드는 Check 노드와 동일한 방법으로 작동되지만 추가 유효성 검증 등록 정보를 포함하고 있어서 구문 분석기를 사용한 메시지 컨텐츠 유효성 검증을 허용합니다(이 기능을 지원하는 구문 분석기인 경우).
테스트가 성공할 경우에는 메시지가 true 터미널로 전달되고 실패할 경우에는 false 터미널로 전달됩니다. 명령문을 해석할 수 없으면(예를 들면, 입력 메시지에 나타나지 않는 필드의 값을 테스트함) 메시지가 unknown 터미널로 전달됩니다. 다른 오류가 감지되면 메시지가 failure 터미널로 전달됩니다.
ESQL문의 테스트는 메시지 컨텐츠, 데이터베이스 컨텐츠 또는 이들의 조합에 따라 달라질 수 있습니다.
데이터베이스를 참조하는 경우 브로커 시스템의 레지스트리에 정의된 각 데이터 소스에 대한 사용자 및 암호 정보를 지정하여 이 노드에서 액세스하는 방법을 제어할 수 있습니다. 분산 시스템에서는 이 값을 초기화하고 유지보수하려면 mqsisetdbparms 명령을 사용하십시오.
z/OS에서는 데이터베이스에 액세스하려는 브로커 시작 작업 ID를 사용합니다.
Compute 노드 대신 이 노드를 사용하여 이 기능을 제공하십시오. 제어 메시지 선택 및 라우팅을 제어하도록 Compute 노드를 구성할 수도 있지만 Filter 노드가 해당 기능을 보다 적절하게 수행합니다.
특정 시간에 매일 배치 작업을 실행하거나 고정 간격으로 정보를 처리하여 공개할 수 있습니다(예를 들면, 환율에 대한 정보를 계산하여 은행으로 송신할 수 있음). 또는 특정 트랜잭션이 정의된 시간 내에 완료되지 않을 경우 지정된 복구 조치를 취할 수도 있습니다. 이 모든 경우를 위해 두 개의 시간종료 노드(TimeoutControl 및 TimeoutNotification)가 제공됩니다.
두 개 이상의 TimeoutControl 노드가 각 TimeoutNotification 노드와 연관될 수 있습니다.
AggregateControl, AggregateReply 및 AggregateRequest 노드를 사용하여 관련 요청 및 응답을 조합할 수 있습니다. 이러한 노드를 사용하여 하나의 입력 메시지에 대한 응답으로 여러 개의 요청을 생성하고 이러한 요청에 대한 응답으로 수신한 응답을 제어 및 통합하며 응답에서 제공된 정보를 결합하여 처리를 계속하십시오.
오류 핸들링 및 보고에 영향을 주는 노드를 사용할 수 있습니다.
Compute, Extract 및 Mapping 노드를 제외하고는 노드에서 수신한 입력 메시지와 노드에서 송신한 출력 메시지는 동일합니다.