№18. Агрегация сообщений

Тема: Агрегация сообщений

Время на выполнение: 60 минут

Задание

Из очереди получить сообщение со сделкой из файлового каталога получить платеж. По ID сделки объединить данные и отправить их в очередь.

Выполнение

Создайте очереди LAB.18.IN и LAB.18.OUT
image002

Создайте каталог:

/home/vs/broker/lab18

mkdir /home/vs/broker/lab18

Создайте приложение LAB.18
image003

image004

image005

Создайте поток Agr
image006

Перетащите в рабочую область ноду MQ Input
image007

Свойства ноды:
image008

image009

image010

Добавьте в поток ноду File Input:
image011

Свойства ноды File Input
image012

image013

image014

Добавьте в поток ноду Collector
image015

Добавьте два входящие терминалы к ноде:

  • MQ
  • File

image016

image017

image018

image019

Свойства ноды:
image020

Соедините ноды как показано на рисунке:
image021

Свойства ноды Collector:
image022

Для терминала MQ укажите Correlation path
image023

Для терминала File укажите Correlation path
image024

Добавьте в поток ноду Compute
image025

Исходный код модуля XMLNSC:

BROKER SCHEMA com.sharavara

CREATE COMPUTE MODULE Agr_XMLNSCs
                CREATE FUNCTION Main() RETURNS BOOLEAN
                BEGIN
                               CALL CopyMessageHeaders();
                               -- CALL CopyEntireMessage();
                               SET OutputRoot.XMLNSC.Message.MQ = InputRoot.Collection.MQ.XMLNSC;
                               SET OutputRoot.XMLNSC.Message.File = InputRoot.Collection.File.DFDL;
                               RETURN TRUE;
                END;

                CREATE PROCEDURE CopyMessageHeaders() BEGIN
                               DECLARE I INTEGER 1;
                               DECLARE J INTEGER;
                               SET J = CARDINALITY(InputRoot.*[]);
                               WHILE I < J DO
                                               SET OutputRoot.*[I] = InputRoot.*[I];
                                               SET I = I + 1;
                               END WHILE;
                END;

                CREATE PROCEDURE CopyEntireMessage() BEGIN
                               SET OutputRoot = InputRoot;
                END;
END MODULE;

Добавьте к потоку ноду MQ Output
image026

Свойства ноды:
image027

Добавьте к потоку обработчик ошибок:
image028

Тестирование

Скопируйте файл payment.csv в каталог /home/vs/broker/lab18

cp /home/vs/IBM/IntegrationToolkit90/workspace/LAB.18/payment.csv /home/vs/broker/lab18/

Содержимое файла:

1,1,2014-01-10,150000

image029

Сообщение для теста:

<?xml version="1.0" encoding="UTF-8"?>
<Q1:Deal id="1" xmlns:Q1="http://sharavara.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="http://sharavara.com ../LAB.7.LIB/com/sharavara/Deal.xsd "
<ClientId>1</ClientId>
<ProdId>1</ProdId>
<Term>12</Term>
<Rate>10</Rate>
<Amount>20000</Amount>
<BeginDate>2001-01-01</BeginDate>
<EndDate>2002-01-01</EndDate>
</Q1:Deal>

Запустите тест потока:
image030
Результат выполнения теста:
image031

Comments are closed.