首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tibco-Rv:如何使用TibRv-Java api建立双向通信

Tibco-Rv:如何使用TibRv-Java api建立双向通信
EN

Stack Overflow用户
提问于 2018-06-23 07:01:11
回答 1查看 1.9K关注 0票数 0

是否可以在使用TibRvdTransport->send(msg)发送Tbrv时进行回调,而在订阅者中,我们可以发送回复吗?

我想发送“你好”从出版商和接收者应该收到它和发送“嗨”的答复。发布者必须在回调中得到这个"Hi“并打印出来。

Publisher=>

代码语言:javascript
运行
复制
TibrvRvdTrasport transport= new TibrvRvdTrasport ("12000","127.0.0.1","6000");
TibrvMsg tibMsg = new TibrvMsg();
tibMsg.add("msg" "hello");
tibMsg.setSendSubject(subject);
transport.send(tibMsg);

Subscriber=>

代码语言:javascript
运行
复制
listener = new TibRvListener(tibRvQueue, new TibRvMsgCallback(){
    @Override
    public void onMsg(TibRvListener listener,TibRvMsg msg){
        try{
            -----//sendReply("Hi")
        }
        catch(Exception e){

        }
    }, 
    new TibRvdTransport("12000","127.0.0.1","6000")),subject,null);
EN

回答 1

Stack Overflow用户

发布于 2018-07-23 09:24:17

当然,这里有一种方法。通常,您创建一个私有的“收件箱”主题,该主题用作原始请求的回复主题。这个“收件箱”只是一个简单而独特的字符串。它可以是任何东西(也可以是“回复”),但是在大多数情况下有一个独特的回复是有用的。

发送方:

代码语言:javascript
运行
复制
  Tibrv.open(Tibrv.IMPL_NATIVE);
  TibrvRvdTransport transport = new TibrvRvdTransport ("12000","127.0.0.1","6000");
  TibrvMsg request = new TibrvMsg();
  request.add("msg", "hello ");
  request.setSendSubject("TEST");
  request.setReplySubject(transport.createInbox()); // the subject we expect a reply on

  System.err.println("sending request: " + request);
  TibrvMsg reply = transport.sendRequest(request, 10*1000); // wait 10 seconds for reply
  System.err.println("received response: " + reply);
  Tibrv.close();

接收方:

代码语言:javascript
运行
复制
  Tibrv.open(Tibrv.IMPL_NATIVE);
  TibrvRvdTransport transport = new TibrvRvdTransport ("12000","127.0.0.1","6000");

  new TibrvListener( Tibrv.defaultQueue(), new TibrvMsgCallback() {

    @Override
    public void onMsg(TibrvListener listener, TibrvMsg msg)
    {
      try {
        System.err.println("received request: " + msg );
        TibrvMsg reply = new TibrvMsg();
        reply.setSendSubject(msg.getReplySubject()); // send response to the 'reply' subject
        reply.add("response","world!");
        System.err.println("sending response: " + reply );
        transport.send(reply);
      }
      catch (TibrvException e) {
        e.printStackTrace();
      }

    }}, transport, "TEST", null );

  TibrvDispatcher dispatcher = new TibrvDispatcher(Tibrv.defaultQueue());
  Thread.sleep(100*1000);
  dispatcher.destroy();
  Tibrv.close();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50998781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档