类 BrokerClientItem

java.lang.Object
com.iohao.game.bolt.broker.core.client.BrokerClientItem
所有已实现的接口:
BroadcastContext, BroadcastOrderContext, CommunicationAggregationContext, InvokeExternalModuleContext, InvokeModuleContext, ProcessorContext, AwareInject

public class BrokerClientItem extends Object implements CommunicationAggregationContext, AwareInject
客户连接项
     与游戏网关是 1:1 的关系
 
作者:
渔民小镇
日期:
2022-05-14
  • 构造器详细资料

    • BrokerClientItem

      public BrokerClientItem(String address)
  • 方法详细资料

    • invokeSync

      public Object invokeSync(Object request, int timeoutMillis) throws com.alipay.remoting.exception.RemotingException, InterruptedException
      抛出:
      com.alipay.remoting.exception.RemotingException
      InterruptedException
    • invokeSync

      public Object invokeSync(Object request) throws com.alipay.remoting.exception.RemotingException, InterruptedException
      抛出:
      com.alipay.remoting.exception.RemotingException
      InterruptedException
    • oneway

      public void oneway(Object request) throws com.alipay.remoting.exception.RemotingException
      抛出:
      com.alipay.remoting.exception.RemotingException
    • broadcast

      public void broadcast(ResponseMessage responseMessage, Collection<Long> userIdList)
      从接口复制的说明: BroadcastContext
      广播消息给指定用户列表
      指定者:
      broadcast 在接口中 BroadcastContext
      参数:
      responseMessage - 消息
      userIdList - 指定用户列表 (如果为 null 或 empty 就不会触发)
    • broadcast

      public void broadcast(ResponseMessage responseMessage, long userId)
      从接口复制的说明: BroadcastContext
      广播消息给单个用户
      指定者:
      broadcast 在接口中 BroadcastContext
      参数:
      responseMessage - 消息
      userId - userId
    • broadcast

      public void broadcast(ResponseMessage responseMessage)
      从接口复制的说明: BroadcastContext
      全服广播
      指定者:
      broadcast 在接口中 BroadcastContext
      参数:
      responseMessage - 消息
    • broadcastOrder

      public void broadcastOrder(ResponseMessage responseMessage, Collection<Long> userIdList)
      从接口复制的说明: BroadcastOrderContext
      广播消息给指定用户列表
      指定者:
      broadcastOrder 在接口中 BroadcastOrderContext
      参数:
      responseMessage - 消息
      userIdList - 指定用户列表 (如果为 null 或 empty 就不会触发)
    • broadcastOrder

      public void broadcastOrder(ResponseMessage responseMessage, long userId)
      从接口复制的说明: BroadcastOrderContext
      广播消息给单个用户
      指定者:
      broadcastOrder 在接口中 BroadcastOrderContext
      参数:
      responseMessage - 消息
      userId - userId
    • broadcastOrder

      public void broadcastOrder(ResponseMessage responseMessage)
      从接口复制的说明: BroadcastOrderContext
      全服广播
      指定者:
      broadcastOrder 在接口中 BroadcastOrderContext
      参数:
      responseMessage - 消息
    • invokeModuleMessage

      public ResponseMessage invokeModuleMessage(RequestMessage requestMessage)
      从接口复制的说明: InvokeModuleContext
      根据路由信息来请求其他子服务器(其他逻辑服)的数据 example
      
           public void count() {
               RequestMessage request = ...
               // 模块通讯上下文
               InvokeModuleContext invokeModuleContext = ...
               // 根据路由信息来请求其他子服务器(其他逻辑服)的数据
               ResponseMessage responseMessage = invokeModuleContext.invokeModuleMessage(request);
               // 得到逻辑服返回的业务数据
               YourMsg msg = responseMessage.getData(YourMsg.class);
               log.info("message : {} ", msg);
           }
       
       
      指定者:
      invokeModuleMessage 在接口中 InvokeModuleContext
      参数:
      requestMessage - requestMessage
      返回:
      ResponseMessage
    • invokeModuleVoidMessage

      public void invokeModuleVoidMessage(RequestMessage requestMessage)
      从接口复制的说明: InvokeModuleContext
      根据路由信息来请求其他子服务器(其他逻辑服)的方法,并且不需要返回值 example
      
           // 内部模块通讯上下文,内部模块指的是游戏逻辑服
           InvokeModuleContext invokeModuleContext = ...
           // 请求房间逻辑服来创建房间,并且不需要返回值
           // 路由、业务参数
           invokeModuleContext.invokeModuleVoidMessage(requestMessage);
       
       
      指定者:
      invokeModuleVoidMessage 在接口中 InvokeModuleContext
      参数:
      requestMessage - requestMessage
    • invokeModuleCollectMessage

      public ResponseCollectMessage invokeModuleCollectMessage(RequestMessage requestMessage)
      从接口复制的说明: InvokeModuleContext
      模块之间的访问,访问【同类型】的多个逻辑服
           模块A 访问 模块B 的某个方法,因为只有模块B持有这些数据,这里的模块指的是逻辑服。
           假设启动了多个模块B,分别是:模块B-1、模块B-2、模块B-3、模块B-4 等。
           框架支持访问【同类型】的多个逻辑服,并把多个相同逻辑服结果收集到一起。
       
      example
      
           public void count() {
               RequestMessage request = ...
               // 模块通讯上下文
               InvokeModuleContext invokeModuleContext = ...
               // 根据路由信息来请求其他【同类型】的多个子服务器(其他逻辑服)数据
               ResponseCollectMessage responseCollectMessage = invokeModuleContext.invokeModuleCollectMessage(request);
      
               // 每个逻辑服返回的数据集合
               List<ResponseCollectItemMessage> messageList = responseCollectMessage.getMessageList();
      
               for (ResponseCollectItemMessage responseCollectItemMessage : messageList) {
                   ResponseMessage responseMessage = responseCollectItemMessage.getResponseMessage();
                   // 得到逻辑服返回的业务数据
                   YourMsg msg = responseMessage.getData(YourMsg.class);
                   log.info("message : {} ", msg);
               }
           }
       
       
      指定者:
      invokeModuleCollectMessage 在接口中 InvokeModuleContext
      参数:
      requestMessage - requestMessage
      返回:
      ResponseAggregationMessage
    • invokeExternalModuleCollectMessage

      public ResponseCollectExternalMessage invokeExternalModuleCollectMessage(int bizCode, Serializable data)
      从接口复制的说明: InvokeExternalModuleContext
      【游戏逻辑服】访问多个【游戏对外服】
           有些数据只存在于游戏对外服,但由于游戏对外服可能会有多个,特别是在分布式场景下。
           所以这里发起请求时,会调用多个游戏对外服来处理这个请求。
       
      指定者:
      invokeExternalModuleCollectMessage 在接口中 InvokeExternalModuleContext
      参数:
      bizCode - 业务码
      data - 业务参数
      返回:
      ResponseCollectExternalMessage 一定不为 null
    • invokeExternalModuleCollectMessage

      public ResponseCollectExternalMessage invokeExternalModuleCollectMessage(RequestCollectExternalMessage request)
      从接口复制的说明: InvokeExternalModuleContext
      【游戏逻辑服】访问多个【游戏对外服】
           有些数据只存在于游戏对外服,但由于游戏对外服可能会有多个,特别是在分布式场景下。
           所以这里发起请求时,会调用多个游戏对外服来处理这个请求。
       
      指定者:
      invokeExternalModuleCollectMessage 在接口中 InvokeExternalModuleContext
      参数:
      request - 请求
      返回:
      ResponseCollectExternalMessage 一定不为 null
    • invokeOneway

      public void invokeOneway(Object message)
      从接口复制的说明: ProcessorContext
      oneway 异步调用
      指定者:
      invokeOneway 在接口中 ProcessorContext
      参数:
      message - message
    • aware

      public void aware(Object obj)
      从接口复制的说明: AwareInject
      附加能力
      指定者:
      aware 在接口中 AwareInject
      参数:
      obj - o
    • registerToBroker

      public void registerToBroker()
      注册到网关 broker 客户端服务器注册到网关服
    • startup

      public void startup()