노드를 사용하여 JavaCompute 노드를 사용하여 글로벌 캐시에 있는 맵과 상호 작용합니다.
태스크 정보
JavaCompute 노드를 사용하여 글로벌 맵에 데이터를 저장할 수 있습니다. 그런 다음 처리 또는 라우팅을 위해 글로벌 캐시에서 데이터를 가져올 수 있는 다른 JavaCompute 노드를 작성할 수 있습니다. 노드는 JavaCompute 노드는 MbGlobalMap 객체를 사용하여 글로벌 캐시 또는 외부 그리드에 액세스합니다. 이
클래스는 맵을 가져오거나 맵에 데이터를 넣거나 가져오기 위해 사용할 수 있습니다. 맵을
정확하게 작성할 수는 없지만 존재하지 않는 맵을 가져오는
경우 맵이 자동으로 작성됩니다. 외부 눈금에서
글로벌 맵을 가져오는 경우 getGlobalMap 메소드는 눈금에 대한
연결에 존재하지 않는 경우 연결을 작성합니다. 캐시와의
상호작용은 메시지 플로우 트랜잭션 외부에서 수행되며 즉시
커미트됩니다. 캐시와 상호작용하는 노드의 다운스트림에서
예외가 전달되는 경우에는 캐시 상호작용이 롤백되지
않습니다.
다음 단계는 하나의 메시지 플로우가 맵에 데이터를
추가하고 다른 플로우가 해당 맵에서 데이터를 가져오는 방법을 설명합니다.
프로시저
- JavaCompute 노드를 포함하는 메시지 플로우를 작성하십시오.
MQOutput 노드 앞이나 뒤에
JavaCompute 노드를 배치할 수 있습니다. 다음 예에서
JavaCompute 노드는
JavaCompute 노드가 출력 메시지의 메시지 ID를 사용할 수 있도록
MQOutput 노드 뒤에 배치됩니다.
- JavaCompute 노드를 두 번 누르십시오.
새 Java Compute 노드 클래스
마법사가 열립니다.
- Java 계산 노드 클래스 분할창에서 적절한 정보를 제공한 후 다음을 클릭하십시오.
다음을 클릭하여 기본값을 승인할 수 있습니다.
- Java 계산 노드 클래스 템플리트 분할창에서 시나리오에 적합한 템플리트를 선택한 후 완료를 클릭하십시오.
템플리트 Java 파일이 편집기에서 열리고 사용자 고유의 코드를 추가할 수 있는 위치를 표시합니다.
- 임베드된 캐시에서 맵을 가져오거나
맵을 작성하려면(맵이 없는 경우) 다음 예와
같이 MbGlobalMap 오브젝트를 추가하십시오.
그만큼 MbGlobalMap 객체는 Java Plugin API 문서에도 설명되어 있습니다.
MbGlobalMap globalMap = MbGlobalMap.getGlobalMap("MyMap");
이 예제에서는 "MyMap" 라는 맵을 가져옵니다. 이 맵이 없으면 맵이
작성됩니다. 또는 임베드된 캐시를 사용하는 경우
다음 예와 같이 맵 이름을 지정하지 않고 기본 맵을
사용할 수 있습니다.
외부 눈금에
연결하는 경우에는 기본 맵이 존재하지 않습니다. 외부
그리드에서 올바른 맵 이름을 지정해야 합니다. MbGlobalMap globalMap = MbGlobalMap.getGlobalMap();
통합 노드에 사용하도록
예약된 SYSTEM.BROKER로 시작되는 이름을 제외한 모든 맵 이름이
허용됩니다. 기본 맵의 이름은 SYSTEM.BROKER.DEFAULTMAP 입니다. 이 지도를 사용하거나 지울 수 있습니다.
외부 눈금에서 맵을 가져오려면 외부 눈금의 맵 이름과 눈금에
연결하는 데 사용되는 구성 가능 서비스의 이름을 지정하여 MbGlobalMap 오브젝트를
추가하십시오.
MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");
이
예에서 "MyMap.LUT" 맵은 XC10 어플라이언스의 외부 눈금에
있습니다. 눈금에 연결하는 데 사용되는 구성 가능 서비스를
"xc10Connection"이라고 합니다.
- 선택사항: 데이터가 자동으로 제거되기 전에 글로벌 캐시에 남아 있는 시간 (초) 을 지정하십시오.
7단계에 설명된 대로 put, update 또는 upsert 방법을 사용하여 지도의 데이터를 편집할 수 있습니다.
- 다음 방법 중 하나를 사용하여 지도의 데이터를 편집합니다:
put: 새 키-값 쌍을 추가하고 키가 이미 존재하는 경우 오류를 발생시킵니다. 맵에 데이터를 넣으려면 다음 예시와 같이 맵에 키와 값 쌍을 만들어야 합니다:globalMap.put(key, val);
키 및 값의 경우 Java 기본 유형 및 문자열이 지원됩니다. Java 오브젝트는 값으로 지원됩니다. 임베드된 눈금의 경우에만 키가 기본요소 또는
문자열의 배열이 될 수도 있습니다. (글로벌 캐시와 함께 사용자 고유의 Java 클래스를 사용하려면 Java 클래스를 포함하는 JAR 파일을 공유 클래스 디렉토리 중 하나에 넣으십시오.)
update: 기존 키-값 쌍의 값을 업데이트하거나 키가 존재하지 않는 경우 오류를 발생시킵니다.globalMap.update(key, val);
upsert: 새 키-값 쌍을 추가하거나 기존 키-값 쌍이 있는 경우 업데이트합니다. upsert 메서드는 무효화되므로 두 시나리오 모두 오류가 발생하지 않습니다.globalMap.upsert(key, val);
Websphere eXtreme Scale 지원 캐시에는 업서트를 사용할 수 없습니다. Redis, 임베디드 및 로컬 지원 캐시에서만 사용할 수 있습니다.
- 메시지 플로우를 저장하십시오.
- 다른 메시지 플로우에서 저장된 데이터에 액세스하려면 JavaCompute 노드를 포함하는 플로우를 작성하십시오.
예를 들어, 다음 메시지 플로우에는 맵에서 적절한 정보를 검색한 후
MQReply 노드를 통해 응답 메시지를 송신하는
JavaCompute 노드가 포함되어 있습니다.
- 2, 3및 4단계를 반복하여 새 JavaCompute 노드에 대한 Java 파일을 작성하십시오.
- MbGlobalMap 오브젝트를 사용하여 5단계에서 작성한 맵을
가져온 다음 6단계에서 맵에 추가한 데이터를 가져오십시오. 예를 들어 검색하는 데이터가 문자열이라는
사실을 알고 있는 경우 다음 예와 같이
데이터를 가져올 때 문자열을 지정하십시오.
MbGlobalMap globalMap = MbGlobalMap.getGlobalMap("MyMap");
...
String val = (String)globalMap.get(key);
다음 예는 외부 눈금에
있는 맵에 추가한 데이터를 가져오는 방법을
보여줍니다.
MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");
...
String val = (String)xc10Map.get(key);
캐시가 너무 커지는 것을
방지하려면 키 및 값 쌍을 완료할 때
remove() 메소드를 사용하여 해당
데이터를 맵에서 삭제하십시오.
컨텐츠 지원을 사용하여 Java 코드를 구성할 때 사용 가능한 옵션을 나열할 수 있습니다. 콘텐츠 지원에 액세스하려면 삽입 지점에 커서를 놓은 다음 클릭하거나 Ctrl+스페이스 키를 누릅니다. 예를
들어 "myMap"을 입력한 다음 Ctrl+Space를 누르는 경우 다음
조치를 포함하여 옵션 목록에서 선택할 수 있습니다.
- remove: 글로벌
캐시에서 단일 오브젝트 제거
- containsKey: 키가
맵에 있는지 여부 표시
- update: 기존 오브젝트 업데이트
사용 가능한 모든 옵션은 Java 플러그인 API용 Javadoc에 문서화되어 있습니다(
IBM® 통합 API 참조).
- 메시지 플로우를 저장하십시오.
- 메시지 플로우를 배치하십시오.