멀티바인딩 라우터
본 절에서는 멀티바인딩 라우터에서 서비스 분기방법과 룰에 대해서 설명한다.
1. 개요
AnyLink의 서비스들을 여러 가지 조건에 따라 선택적으로 분기하거나 멀티캐스트할 수 있는 기능을 제공하는 컴포넌트가 멀티바인딩 라우터이다.
멀티바인딩 라우터가 분기 혹은 멀티캐스트할 수 있는 서비스들은 AnyLink 내부 서비스들 즉, 서비스 플로우의 Receive 메시지 이벤트들, 어댑터의 아웃바운드 룰들, 그리고 또다른 멀티바인딩 라우터 룰 등을 모두 포함한다.
멀티바인딩 라우터 룰은 그 자체로서 하나의 AnyLink의 서비스로 간주된다. 즉, 어댑터의 파싱 룰을 통해서 멀티바인딩 룰을 호출할 수 있으며, 서비스 플로우의 서비스 액티비티들 중 멀티바인딩 액티비티, 또다른 멀티바인딩 룰을 통해서도 호출할 수 있다.
2. 멀티바인딩 룰
멀티바인딩 라우터의 룰은 다음과 같은 요소를 기본으로 구성된다.
-
멀티바인딩 룰을 서비스로 노출하는 요청 메시지, 응답 메시지, 비정상 응답 메시지
-
라우팅 규칙에 따라 호출할 대상 서비스 정보들
-
라우팅 메소드와 서비스별 파라미터들
com.tmax.anylink.api.multibinding.DefaultRoutingHandler 클래스는 다음과 같은 메소드를 선언하고 있다.
String route(MessageContext ctx) throws AnyLinkException;
멀티바인딩 라우터에서 사용되는 라우팅 메소드와 파라미터의 의미는 다음과 같다.
라우팅 메소드 | 설명 |
---|---|
사용자가 변수를 정의하고 해당 변수의 값에 따라 라우팅한다. |
|
RoundRobin |
라운드로빈(round-robin) 방식으로 각 서비스들을 순차적으로 라우팅한다. |
가중치를 고려한 라운드 로빈 라우팅이다. |
|
Multicast |
one-way 방식의 서비스일 때에만 사용 가능하며, 등록된 모든 엔트리로 전송한다. |
지정된 시간대에 해당하는 서비스를 호출한다. |
|
FlowCorrelation |
서비스 플로우의 코릴레이션 방식이다. 값 매칭을 사용하여 가장 먼저 일치하는 서비스 항목으로 라우팅한다. 이때는 대상 서비스가 코릴레이션을 지원하는 서비스 플로우 메시지 이벤트여야 한다. |
사용자 핸들러 클래스이다. |
메소드에 대한 상세설명은 해당 절을 참고한다. |
2.1. Value
사용자가 변수를 정의하고 해당 변수의 값에 따라 라우팅을 하는 메소드로 표현식을 계산한 값과 일치하는 서비스 항목으로 라우팅을 한다. 요청 메시지를 표현식에서 input이라는 변수로 사용할 수 있다.
-
형식
$input.field1 (변수명)
-
예
1, 2, svc1