Search in sources :

Example 1 with RegisterBrokerResponseHeader

use of org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader in project rocketmq-rocketmq-all-4.1.0-incubating by lirenzuo.

the class DefaultRequestProcessor method registerBroker.

public RemotingCommand registerBroker(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException {
    final RemotingCommand response = RemotingCommand.createResponseCommand(RegisterBrokerResponseHeader.class);
    final RegisterBrokerResponseHeader responseHeader = (RegisterBrokerResponseHeader) response.readCustomHeader();
    final RegisterBrokerRequestHeader requestHeader = (RegisterBrokerRequestHeader) request.decodeCommandCustomHeader(RegisterBrokerRequestHeader.class);
    TopicConfigSerializeWrapper topicConfigWrapper;
    if (request.getBody() != null) {
        topicConfigWrapper = TopicConfigSerializeWrapper.decode(request.getBody(), TopicConfigSerializeWrapper.class);
    } else {
        topicConfigWrapper = new TopicConfigSerializeWrapper();
        topicConfigWrapper.getDataVersion().setCounter(new AtomicLong(0));
        topicConfigWrapper.getDataVersion().setTimestamp(0);
    }
    RegisterBrokerResult result = this.namesrvController.getRouteInfoManager().registerBroker(requestHeader.getClusterName(), requestHeader.getBrokerAddr(), requestHeader.getBrokerName(), requestHeader.getBrokerId(), requestHeader.getHaServerAddr(), topicConfigWrapper, null, ctx.channel());
    responseHeader.setHaServerAddr(result.getHaServerAddr());
    responseHeader.setMasterAddr(result.getMasterAddr());
    byte[] jsonValue = this.namesrvController.getKvConfigManager().getKVListByNamespace(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG);
    response.setBody(jsonValue);
    response.setCode(ResponseCode.SUCCESS);
    response.setRemark(null);
    return response;
}
Also used : RemotingCommand(org.apache.rocketmq.remoting.protocol.RemotingCommand) AtomicLong(java.util.concurrent.atomic.AtomicLong) RegisterBrokerResult(org.apache.rocketmq.common.namesrv.RegisterBrokerResult) TopicConfigSerializeWrapper(org.apache.rocketmq.common.protocol.body.TopicConfigSerializeWrapper) RegisterBrokerResponseHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader) UnRegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.UnRegisterBrokerRequestHeader) RegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerRequestHeader)

Example 2 with RegisterBrokerResponseHeader

use of org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader in project rocketmq-rocketmq-all-4.1.0-incubating by lirenzuo.

the class BrokerOuterAPI method registerBroker.

// 向 NameServer注册 Broker
private RegisterBrokerResult registerBroker(final String namesrvAddr, final String clusterName, final String brokerAddr, final String brokerName, final long brokerId, final String haServerAddr, final TopicConfigSerializeWrapper topicConfigWrapper, final List<String> filterServerList, final boolean oneway, final int timeoutMills) throws RemotingCommandException, MQBrokerException, RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, InterruptedException {
    RegisterBrokerRequestHeader requestHeader = new RegisterBrokerRequestHeader();
    requestHeader.setBrokerAddr(brokerAddr);
    requestHeader.setBrokerId(brokerId);
    requestHeader.setBrokerName(brokerName);
    requestHeader.setClusterName(clusterName);
    requestHeader.setHaServerAddr(haServerAddr);
    RemotingCommand request = RemotingCommand.createRequestCommand(RequestCode.REGISTER_BROKER, requestHeader);
    RegisterBrokerBody requestBody = new RegisterBrokerBody();
    requestBody.setTopicConfigSerializeWrapper(topicConfigWrapper);
    requestBody.setFilterServerList(filterServerList);
    request.setBody(requestBody.encode());
    if (oneway) {
        try {
            this.remotingClient.invokeOneway(namesrvAddr, request, timeoutMills);
        } catch (RemotingTooMuchRequestException e) {
        // Ignore
        }
        return null;
    }
    RemotingCommand response = this.remotingClient.invokeSync(namesrvAddr, request, timeoutMills);
    assert response != null;
    switch(response.getCode()) {
        case ResponseCode.SUCCESS:
            {
                RegisterBrokerResponseHeader responseHeader = (RegisterBrokerResponseHeader) response.decodeCommandCustomHeader(RegisterBrokerResponseHeader.class);
                RegisterBrokerResult result = new RegisterBrokerResult();
                result.setMasterAddr(responseHeader.getMasterAddr());
                result.setHaServerAddr(responseHeader.getHaServerAddr());
                if (response.getBody() != null) {
                    result.setKvTable(KVTable.decode(response.getBody(), KVTable.class));
                }
                return result;
            }
        default:
            break;
    }
    throw new MQBrokerException(response.getCode(), response.getRemark());
}
Also used : RemotingCommand(org.apache.rocketmq.remoting.protocol.RemotingCommand) RegisterBrokerResult(org.apache.rocketmq.common.namesrv.RegisterBrokerResult) MQBrokerException(org.apache.rocketmq.client.exception.MQBrokerException) UnRegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.UnRegisterBrokerRequestHeader) RegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerRequestHeader) RegisterBrokerBody(org.apache.rocketmq.common.protocol.body.RegisterBrokerBody) RemotingTooMuchRequestException(org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException) RegisterBrokerResponseHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader)

Example 3 with RegisterBrokerResponseHeader

use of org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader in project rocketmq by apache.

the class DefaultRequestProcessor method registerBroker.

public RemotingCommand registerBroker(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException {
    final RemotingCommand response = RemotingCommand.createResponseCommand(RegisterBrokerResponseHeader.class);
    final RegisterBrokerResponseHeader responseHeader = (RegisterBrokerResponseHeader) response.readCustomHeader();
    final RegisterBrokerRequestHeader requestHeader = (RegisterBrokerRequestHeader) request.decodeCommandCustomHeader(RegisterBrokerRequestHeader.class);
    TopicConfigSerializeWrapper topicConfigWrapper;
    if (request.getBody() != null) {
        topicConfigWrapper = TopicConfigSerializeWrapper.decode(request.getBody(), TopicConfigSerializeWrapper.class);
    } else {
        topicConfigWrapper = new TopicConfigSerializeWrapper();
        topicConfigWrapper.getDataVersion().setCounter(new AtomicLong(0));
        topicConfigWrapper.getDataVersion().setTimestamp(0);
    }
    RegisterBrokerResult result = this.namesrvController.getRouteInfoManager().registerBroker(requestHeader.getClusterName(), requestHeader.getBrokerAddr(), requestHeader.getBrokerName(), requestHeader.getBrokerId(), requestHeader.getHaServerAddr(), topicConfigWrapper, null, ctx.channel());
    responseHeader.setHaServerAddr(result.getHaServerAddr());
    responseHeader.setMasterAddr(result.getMasterAddr());
    byte[] jsonValue = this.namesrvController.getKvConfigManager().getKVListByNamespace(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG);
    response.setBody(jsonValue);
    response.setCode(ResponseCode.SUCCESS);
    response.setRemark(null);
    return response;
}
Also used : RemotingCommand(org.apache.rocketmq.remoting.protocol.RemotingCommand) AtomicLong(java.util.concurrent.atomic.AtomicLong) RegisterBrokerResult(org.apache.rocketmq.common.namesrv.RegisterBrokerResult) TopicConfigSerializeWrapper(org.apache.rocketmq.common.protocol.body.TopicConfigSerializeWrapper) RegisterBrokerResponseHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader) UnRegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.UnRegisterBrokerRequestHeader) RegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerRequestHeader)

Example 4 with RegisterBrokerResponseHeader

use of org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader in project rocketmq by apache.

the class BrokerOuterAPI method registerBroker.

private RegisterBrokerResult registerBroker(final String namesrvAddr, final String clusterName, final String brokerAddr, final String brokerName, final long brokerId, final String haServerAddr, final TopicConfigSerializeWrapper topicConfigWrapper, final List<String> filterServerList, final boolean oneway, final int timeoutMills) throws RemotingCommandException, MQBrokerException, RemotingConnectException, RemotingSendRequestException, RemotingTimeoutException, InterruptedException {
    RegisterBrokerRequestHeader requestHeader = new RegisterBrokerRequestHeader();
    requestHeader.setBrokerAddr(brokerAddr);
    requestHeader.setBrokerId(brokerId);
    requestHeader.setBrokerName(brokerName);
    requestHeader.setClusterName(clusterName);
    requestHeader.setHaServerAddr(haServerAddr);
    RemotingCommand request = RemotingCommand.createRequestCommand(RequestCode.REGISTER_BROKER, requestHeader);
    RegisterBrokerBody requestBody = new RegisterBrokerBody();
    requestBody.setTopicConfigSerializeWrapper(topicConfigWrapper);
    requestBody.setFilterServerList(filterServerList);
    request.setBody(requestBody.encode());
    if (oneway) {
        try {
            this.remotingClient.invokeOneway(namesrvAddr, request, timeoutMills);
        } catch (RemotingTooMuchRequestException e) {
        // Ignore
        }
        return null;
    }
    RemotingCommand response = this.remotingClient.invokeSync(namesrvAddr, request, timeoutMills);
    assert response != null;
    switch(response.getCode()) {
        case ResponseCode.SUCCESS:
            {
                RegisterBrokerResponseHeader responseHeader = (RegisterBrokerResponseHeader) response.decodeCommandCustomHeader(RegisterBrokerResponseHeader.class);
                RegisterBrokerResult result = new RegisterBrokerResult();
                result.setMasterAddr(responseHeader.getMasterAddr());
                result.setHaServerAddr(responseHeader.getHaServerAddr());
                if (response.getBody() != null) {
                    result.setKvTable(KVTable.decode(response.getBody(), KVTable.class));
                }
                return result;
            }
        default:
            break;
    }
    throw new MQBrokerException(response.getCode(), response.getRemark());
}
Also used : RemotingCommand(org.apache.rocketmq.remoting.protocol.RemotingCommand) RegisterBrokerResult(org.apache.rocketmq.common.namesrv.RegisterBrokerResult) MQBrokerException(org.apache.rocketmq.client.exception.MQBrokerException) UnRegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.UnRegisterBrokerRequestHeader) RegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerRequestHeader) RegisterBrokerBody(org.apache.rocketmq.common.protocol.body.RegisterBrokerBody) RemotingTooMuchRequestException(org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException) RegisterBrokerResponseHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader)

Example 5 with RegisterBrokerResponseHeader

use of org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader in project rocketmq-rocketmq-all-4.1.0-incubating by lirenzuo.

the class DefaultRequestProcessor method registerBrokerWithFilterServer.

// 注册Broker
public RemotingCommand registerBrokerWithFilterServer(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException {
    final RemotingCommand response = RemotingCommand.createResponseCommand(RegisterBrokerResponseHeader.class);
    final RegisterBrokerResponseHeader responseHeader = (RegisterBrokerResponseHeader) response.readCustomHeader();
    final RegisterBrokerRequestHeader requestHeader = (RegisterBrokerRequestHeader) request.decodeCommandCustomHeader(RegisterBrokerRequestHeader.class);
    RegisterBrokerBody registerBrokerBody = new RegisterBrokerBody();
    if (request.getBody() != null) {
        // 把请求体 转换json之后转对象 body里面是什么到时候去broker里面去看他怎么和namesrv交互即可。
        registerBrokerBody = RegisterBrokerBody.decode(request.getBody(), RegisterBrokerBody.class);
    } else {
        registerBrokerBody.getTopicConfigSerializeWrapper().getDataVersion().setCounter(new AtomicLong(0));
        registerBrokerBody.getTopicConfigSerializeWrapper().getDataVersion().setTimestamp(0);
    }
    RegisterBrokerResult result = this.namesrvController.getRouteInfoManager().registerBroker(requestHeader.getClusterName(), requestHeader.getBrokerAddr(), requestHeader.getBrokerName(), requestHeader.getBrokerId(), requestHeader.getHaServerAddr(), registerBrokerBody.getTopicConfigSerializeWrapper(), registerBrokerBody.getFilterServerList(), ctx.channel());
    responseHeader.setHaServerAddr(result.getHaServerAddr());
    responseHeader.setMasterAddr(result.getMasterAddr());
    // 获取顺序消息 topic 列表
    byte[] jsonValue = this.namesrvController.getKvConfigManager().getKVListByNamespace(NamesrvUtil.NAMESPACE_ORDER_TOPIC_CONFIG);
    response.setBody(jsonValue);
    response.setCode(ResponseCode.SUCCESS);
    response.setRemark(null);
    return response;
}
Also used : RemotingCommand(org.apache.rocketmq.remoting.protocol.RemotingCommand) AtomicLong(java.util.concurrent.atomic.AtomicLong) RegisterBrokerResult(org.apache.rocketmq.common.namesrv.RegisterBrokerResult) RegisterBrokerResponseHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader) UnRegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.UnRegisterBrokerRequestHeader) RegisterBrokerRequestHeader(org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerRequestHeader) RegisterBrokerBody(org.apache.rocketmq.common.protocol.body.RegisterBrokerBody)

Aggregations

RegisterBrokerResult (org.apache.rocketmq.common.namesrv.RegisterBrokerResult)6 RegisterBrokerRequestHeader (org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerRequestHeader)6 RegisterBrokerResponseHeader (org.apache.rocketmq.common.protocol.header.namesrv.RegisterBrokerResponseHeader)6 UnRegisterBrokerRequestHeader (org.apache.rocketmq.common.protocol.header.namesrv.UnRegisterBrokerRequestHeader)6 RemotingCommand (org.apache.rocketmq.remoting.protocol.RemotingCommand)6 AtomicLong (java.util.concurrent.atomic.AtomicLong)4 RegisterBrokerBody (org.apache.rocketmq.common.protocol.body.RegisterBrokerBody)4 MQBrokerException (org.apache.rocketmq.client.exception.MQBrokerException)2 TopicConfigSerializeWrapper (org.apache.rocketmq.common.protocol.body.TopicConfigSerializeWrapper)2 RemotingTooMuchRequestException (org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException)2