본문 바로가기
IT/JAVA

[JAVA] TIB/RV 랑데부 통신 관련 로컬 통신 테스트.

by 쫄보에서고수까지 2021. 12. 23.
반응형
// Listener open -> sender open -> send -> sender close -> Listener close
public class main implements TibrvMsgCallback { 

    public String service = "9999";
    public String network = "127.0.0.1";
    public String daemon = "tcp:7500";
    public String subject = "TEST";

    public TibrvMsg msg = new TibrvMsg();
    public TibrvQueue queue;
    public TibrvRvdTransport transport;

    // tip: arguments are passed via the field below this editor
    public void callTibrvListener() 
    {
        // import com.tibcco.tibrv.*;
        
        // tibrvj.jar 파일 필요.
        // RVD 설치 필요. JDK 버전 주의.    
        try {
            // Listener 통신 오픈
            Tibrv.open(Tibrv.IMPL_NATIVE);

            // Transport 생성.
            transport = new TibrvRvdTransport(service, network, daemon);

            

            msg.setSendSubject(subject);

            TibrvListener listen = new TibrvListener(Tibrv.defaultQueue(), this , transport, subject, null);
            
            queue = new TibrvQueue();
            
            callTibrvSender();

            try {
                // send 보낸 메시지 가 있을때 잡아내는 곳.
                Tibrv.defaultQueue().dispatch();
            } catch (InterruptedException el) {
                el.printStackTrace();
            } catch (TibrvException e2) {
                e2.printStackTrace();
            }

        } catch (Exception e) {
            try {
                Tibrv.close();
            } catch (TibrvException el) {
                el.printStackTace();
            }
            e.printStackTrace();
        } finally {
            try {
                Tibrv.close();
            } catch (TibrvException e) {
                e.printStackTrace();
            }
        }


        

    }

    @Override
    public void onMsg(TibrvListener listen , TibrvMsg msg) {
        // dispatch() 에서 잡혔을때 응답 메시지 처리.
        System.out.println("msg : " + msg);
    }
    
    
    public void callTibrvSender() {
    	try {
            // Sneder Open
            Tibrv.open(Tibrv.IMPL_NATIVE);

            transport = new TibrvRvdTransport (service, network, daemon);

            msg.setSendSubject("보낼 subject");
            msg.setReplySubject("받을 subject");

            String test_msg = "ABCDEFG";

            msg.update("DATA", test_msg);

            transport.send(msg);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                Tibrv.close();
            } catch (TibrvException e) {
                e.printStackTrace();
            }
        }
    	
    }
}
반응형
LIST

댓글