直连异步调用

直连异步调用

直连调用不会经过服务发现、服务容错、负载均衡等中间过程,是一种直接与服务端建立连接并发送消息异步接收响应的一种调用方式。

异步调用适用于需要同时处理多个任务,并发性能要求较高的调用场景,而且调用结果不需要立即使用,可以在后台进行处理场景,了解更多

直连异步调用 API

以下是该组件对外提供的异步调用接口,你可以使用该接口进行异步调用。

public interface RemotingInvoker {

    //~

    /**
     * 异步调用
     * @param message
     * @param serverInformation
     * @param callback
     * @throws RpcException
     */
    void invokeAsync(Message message, ServerInformation serverInformation, CallCallback callback) throws RpcException;
}

参数详解:

  1. message 参数:
参数名类型必选说明
commandenum消息类型,默认值 MESSAGE
namespacestring命名空间,查看详情
msgIdstring标识消息的唯一 id
bodyEncodingstring预留字段
bodybyte[]消息体
  1. serverInformation 参数:
参数名类型必选说明
addressenum服务端地址,例如:127.0.0.1
portint服务端端口,例如:80
onlineTimelong服务端上线时间
statusenum服务端状态
weightint服务端权重
  1. callback 参数:
参数名类型必选说明
onCompletedfunction完成回调函数

使用示例

以下代码截取自 Open-Job,代码仅为示例

private void doInvoke(Message message, ServerInformation serverInformation){
    try {
        remotingInvoker.invokeAsync(message, serverInformation, (serverResponse)->{
            // do something
        });
    }catch (RpcException e){
        throw new RpcException(e.getMessage());
    }
}