2020년 1월 31일 금요일

[TIBCO 8.4] Rendezvous 통신테스트 CMD창에서..

TIBCO에서 지원하는 RV(Rendezvous)에 대해 이해와 간단하게 테스트하는 방법을 설명합니다.

■ TIBCO Rendezvous 요약
TIBCO에서 제공하는 미들웨어이며 Rendezvous는 UDP분산 데몬 피어투피어 아키텍처를 사용한 플랫폼입니다.
개발자 관점에서 팁코 랑데뷰 테스트환경 구성 및 테스트를 하는경우 랑데뷰 데몬을 활성화 후 API로 호출이 필요합니다.
*여러언어에 대한 API지원이 되며 해당 샘플소스 및 문서는 설치폴더에 존재합니다.

■ CMD에서 랑데부 통신테스트
1. 랑데부 데몬 구성 랑데부 설치폴더 tibrv에 bin에 tibrvcfg.bat 실행
실행시
TIBRV_HOME is not set or rvconfig.jar could not be located. Please set TIBRV_HOME 에러발생
내컴퓨터 환경변수의 클래스패스에 해당 .jar파일 설정, 윈도우 재부팅후 데몬 실행 확인(http://localhost:7580)
* 데몬실행시 bin₩java.exe not found - check JAVA_HOME 에러 발생됨(테스트에 큰 영향없음)

위에서 리스너를 실행하기전 tibrvcfg.bat를 실행했는데 tibrvlisten 실행만해도 데몬 구동됩니다.

2. 리스너 활성화 및 테스트
데몬 구동후에 CMD에서
tibrvlisten -service 7500 -network ;;127.0.0.1 -daemon tcp:7500 TEST.MESSAGE  명령어로 리스너를 활성화후
tibrvsend -service 7500 -network ;;127.0.0.1 -daemon tcp:7500 TEST.MESSAGE Hello RV 메시지를 전송하면
리스너가 활성화된 CMD에서 확인이 가능하다.
* 서비스포트와 데몬포트를 이해하고 테스트를 하면 좋을것 같습니다.

CMD창에서 테스트할때
{ADV_CLASS="WARN" ADV_SOURCE="SYSTEM" ADV_NAME="LICENSE.EXPIRE" ADV_DESC="The license will expire" 경고가 발생되는데
RV home에 tibrv.tkt 파일이  존재하지 않아서 에러가 발생된겁니다. 문제해결참고 링크
해당 홈디렉토리에 라이센스파일을 넣어주고 재부팅하면 에러가 발생안됩니다.

■ JAVA에서 통신테스트
TIBCO에서 제공하는 JAVA Example 소스를 사용하여 Rendezvous의
Point-to-Point Request/Reply 방식으로 Client와 Server 간 데이터를 주고받는 테스트를 해봤습니다.

* Example소스는 TIBCO설치폴더 > TIBCO_RVD > src > example > java폴더에 있으며 tibrvclient.java와 tibrvserver.java입니다.

1. Clinet -> Server Request
//호출정보 셋팅
new TibrvRvdTransport(service, network, daemon)
setSendSubject(subject)
//전송할 값 셋팅
TibrvMsg query_msg = new TibrvMsg();
TibrvMsgField tmf = new TibrvMsgField();
tmf.name = "AAA";
tmf.id = 111;
tmf.data = "전송할 데이터";
query_msg.addField(tmf);
//서버호출 후 리턴값 수신
TibrvMsg reply_msg = transport.sendRequest(query_msg, query_timeout);
reply_msg.getField("BBB"); //리턴값(서버에서 보낸 필드명)

2. Server -> Client Reply

Client에서 보낸 데이터는 onMsg메서드의 파라메터 TibrvMsg msg에서 받을수 있습니다.

//Client 전송데이터 수신
msggetField("AAA");
//Client 리턴값 셋팅
reply_msg.setReplySubject(request_subject);
TibrvMsg reply_msg = new TibrvMsg();
TibrvMsgField tmf = new TibrvMsgField();
tmf.name = "BBB";
tmf.id = 222;
tmf.data = "리턴할 데이터";
reply_msg.addField(tmf);
//클라이언트 리턴
transport.sendReply(reply_msg, msg);

Clinet, Server간에 데이터를 주고 받을수 있지만 문제가 있습니다. 두번째 호출할때는 서버로그에서 아래와 같은 에러가 발생되었습니다.
TibrvException[error=36,message=id already in use]
그리고 텍스트포맷이 아닌 com.tibco.tibrv.TibrvXml를 사용하여 XML를 전달하려고 했지만 에러가 발생되었습니다.

■ 참고사이트
TIBCO Rendezvous
https://www.tibco.com/ko/products/tibco-rendezvous
Tibco Rendezvous is a high-speed data bus
https://sites.google.com/site/javabidev/Home/software-tibco-rendezvous
TIBCO Rendezvous Documents

끝까지 봐주셔서 감사합니다.

#TIBCO #Rendezvous #RV #랑데부 #Test

댓글 없음:

댓글 쓰기

최근글

9월 태안~천안 아이와 3박4일 가족 여행지