<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                上面已經對tribes的內部實現機制及原理進行了深入的剖析,在理解它的設計原理后看看如何使用tribes,整個使用相當簡單便捷,只需要四步: ① 定義一個消息對象,由于這個消息對象是要在網絡之間傳遞的,網絡傳輸涉及到序列化,所以需要實現Serializable接口。 ~~~ public?class?MyMessage?implements?Serializable?{ private?String?message; public?String?getMessage()?{ return?message; } public?void?setMessage(String?message)?{ this.message?=?message; } } ~~~ ② 定義一個ChannelListener監聽器,對消息的處理邏輯放在messageReceived方法中。 ~~~ public?class?MyMessageListener?implements?ChannelListener{ public?boolean?accept(Serializable?myMessage,?Member?member)?{ return?true; } public?void?messageReceived(Serializable?myMessage,?Member?member)?{ System.out.println(((MyMessage)myMessage).getMessage()+"??from??"+member.getName()); } } ~~~ ③ 定義一個MembershipListener監聽器,對集群成員的加入及失效的邏輯處理,在memberAdded中對成員加入事件邏輯處理,在memberDisappeared中對成員失效事件邏輯處理。 ~~~ public?class?MyMemberListener?implements?MembershipListener?{ public?void?memberAdded(Member?member)?{ System.out.println(member.getName()+"?Added"); } public?void?memberDisappeared(Member?member)?{ System.out.println(member.getName()+"?Disappeared"); } } ~~~ ④ 主程序,分別實例化ChannelListener、MembershipListener并添加到channel中,然后啟動channel,由于集群通信需要啟動幾個節點才可實現,為方便操作這里引入args參數,當參數值為”r”時表示只是啟動一個節點并加入集群,而參數值為”s”時則表示啟動節點加入集群后并且向集群所有成員發送Message,主程序使用循環睡眠是為了不讓程序結束,一旦結束節點就不存在了。可以先帶”r”參數運行兩次,即意味著啟動了兩個節點,最后再帶”s”參數運行,即第三個節點啟動并向前兩個成語節點發送消息,前兩個節點分別輸出了”hello??from??tcp://{169,?254,?75,?186}:4002”,而成員監聽器則會在節點加入或失效時輸出類似這樣的消息”tcp://{169,?254,?75,?186}:4002?Added”、”tcp://{169,?254,?75,?186}:4000?Disappeared”。 ~~~ public?class?TribesTest?{ public?static?void?main(String[]?args)?throws?ChannelException,InterruptedException?{ Channel?myChannel?=?new?GroupChannel(); ChannelListener?msgListener?=?new?MyMessageListener(); MembershipListener?mbrListener?=?new?MyMemberListener(); myChannel.addMembershipListener(mbrListener); myChannel.addChannelListener(msgListener); myChannel.start(Channel.DEFAULT); switch?(args[0])?{ case?("r"): while?(true) Thread.currentThread().sleep(1000); case?("s"): MyMessage?myMsg?=?new?MyMessage(); myMsg.setMessage("hello"); Member[]?group?=?myChannel.getMembers(); myChannel.send(group,?myMsg,?Channel.SEND_OPTIONS_DEFAULT); while?(true) Thread.currentThread().sleep(1000); } } } ~~~ 喜歡java的可以交個朋友: ![](https://box.kancloud.cn/2016-01-15_5698bd8d22882.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看