智能异步调用

智能异步调用

智能异步调用对用户来说是非常简单,用户不需要关心客户端具体会与集群中的哪个实例通信,只需要关注消息本身即可。

智能异步调用会经过服务发现、服务容错、负载均衡等机制

智能异步调用 API

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

public interface ClusterInvoker {

    /**
     * 异步调用
     * @param message 消息体
     * @throws RpcException
     */
    void invokeAsync(Message message, CallCallback callback) throws RpcException;

    // ~
}
  1. message 参数:
参数名类型必选说明
commandenum消息类型,默认值 MESSAGE
namespacestring命名空间,查看详情
msgIdstring标识消息的唯一 id
bodyEncodingstring预留字段
bodybyte[]消息体
  1. callback 参数:
参数名类型必选说明
onCompletedfunction完成回调函数

使用示例

以下代码截取自 Open-Job,示例参考。

public void invoke(Long jobId) {
    Message message = new Message();
    message.setMsgId(String.valueOf(jobId));
    message.setBody(serializeData);
    message.setNamespace(openJobAppDO.getAppName());

    try {
        clusterInvoker.invokeAsync(message, (response) -> {
            updateLog(message, response);
        });
    } catch (RpcException ex){
        updateLog(message, null);
    }
}