Examples of QueryConsumerOffsetResponseHeader


Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

    private RemotingCommand queryConsumerOffset(ChannelHandlerContext ctx, RemotingCommand request)
            throws RemotingCommandException {
        final RemotingCommand response =
                RemotingCommand.createResponseCommand(QueryConsumerOffsetResponseHeader.class);
        final QueryConsumerOffsetResponseHeader responseHeader =
                (QueryConsumerOffsetResponseHeader) response.readCustomHeader();
        final QueryConsumerOffsetRequestHeader requestHeader =
                (QueryConsumerOffsetRequestHeader) request
                    .decodeCommandCustomHeader(QueryConsumerOffsetRequestHeader.class);

        long offset =
                this.brokerController.getConsumerOffsetManager().queryOffset(
                    requestHeader.getConsumerGroup(), requestHeader.getTopic(), requestHeader.getQueueId());

        // 订阅组存在
        if (offset >= 0) {
            responseHeader.setOffset(offset);
            response.setCode(ResponseCode.SUCCESS);
            response.setRemark(null);
        }
        // 订阅组不存在
        else {
            long minOffset =
                    this.brokerController.getMessageStore().getMinOffsetInQuque(requestHeader.getTopic(),
                        requestHeader.getQueueId());
            // 订阅组不存在情况下,如果这个队列的消息最小Offset是0,则表示这个Topic上线时间不长,服务器堆积的数据也不多,那么这个订阅组就从0开始消费。
            // 尤其对于Topic队列数动态扩容时,必须要从0开始消费。
            if (minOffset <= 0) {
                responseHeader.setOffset(0L);
                response.setCode(ResponseCode.SUCCESS);
                response.setRemark(null);
            }
            // 新版本服务器不做消费进度纠正
            else {
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

    private RemotingCommand queryConsumerOffset(ChannelHandlerContext ctx, RemotingCommand request)
            throws RemotingCommandException {
        final RemotingCommand response =
                RemotingCommand.createResponseCommand(QueryConsumerOffsetResponseHeader.class);
        final QueryConsumerOffsetResponseHeader responseHeader =
                (QueryConsumerOffsetResponseHeader) response.getCustomHeader();
        final QueryConsumerOffsetRequestHeader requestHeader =
                (QueryConsumerOffsetRequestHeader) request
                    .decodeCommandCustomHeader(QueryConsumerOffsetRequestHeader.class);

        long offset =
                this.brokerController.getConsumerOffsetManager().queryOffset(
                    requestHeader.getConsumerGroup(), requestHeader.getTopic(), requestHeader.getQueueId());

        // 订阅组存在
        if (offset >= 0) {
            responseHeader.setOffset(offset);
            response.setCode(ResponseCode.SUCCESS_VALUE);
            response.setRemark(null);
        }
        // 订阅组不存在
        else {
            long minOffset =
                    this.brokerController.getMessageStore().getMinOffsetInQuque(requestHeader.getTopic(),
                        requestHeader.getQueueId());
            long maxOffset =
                    this.brokerController.getMessageStore().getMaxOffsetInQuque(requestHeader.getTopic(),
                        requestHeader.getQueueId());

            boolean consumeFromMinEnable = false;
            if (0 == minOffset && maxOffset > 0) {
                long minCommitLogOffset =
                        this.brokerController.getMessageStore().getCommitLogOffsetInQueue(
                            requestHeader.getTopic(), requestHeader.getQueueId(), minOffset);
                long maxCommitLogOffset =
                        this.brokerController.getMessageStore().getCommitLogOffsetInQueue(
                            requestHeader.getTopic(), requestHeader.getQueueId(), maxOffset - 1);

                long memorySpan =
                        (long) (StoreUtil.TotalPhysicalMemorySize * (this.brokerController
                            .getMessageStoreConfig().getAccessMessageInMemoryMaxRatio() / 100.0));

                long diff = maxCommitLogOffset - minCommitLogOffset;
                if (diff < memorySpan) {
                    consumeFromMinEnable = true;
                    log.info(
                        "the consumer group[{}] first subscribed, minOffset: {} maxOffset: {}, from min.",//
                        requestHeader.getConsumerGroup(),//
                        minOffset,//
                        maxOffset);
                }
            }
            else if (minOffset > 0 && maxOffset > 0) {
                consumeFromMinEnable = false;
            }
            else {
                consumeFromMinEnable = true;
                log.info(
                    "the consumer group[{}] first subscribed, minOffset: {} maxOffset: {}, from min, and unknow offset.",//
                    requestHeader.getConsumerGroup(),//
                    minOffset,//
                    maxOffset);
            }

            // 说明这个队列在服务器存储的消息比较少或者没有消息
            // 订阅组消费进度不存在情况下,从0开始消费
            if (consumeFromMinEnable) {
                responseHeader.setOffset(0L);
                response.setCode(ResponseCode.SUCCESS_VALUE);
                response.setRemark(null);
            }
            else {
                response.setCode(MQResponseCode.QUERY_NOT_FOUND_VALUE);
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

    private RemotingCommand queryConsumerOffset(ChannelHandlerContext ctx, RemotingCommand request)
            throws RemotingCommandException {
        final RemotingCommand response =
                RemotingCommand.createResponseCommand(QueryConsumerOffsetResponseHeader.class);
        final QueryConsumerOffsetResponseHeader responseHeader =
                (QueryConsumerOffsetResponseHeader) response.getCustomHeader();
        final QueryConsumerOffsetRequestHeader requestHeader =
                (QueryConsumerOffsetRequestHeader) request
                    .decodeCommandCustomHeader(QueryConsumerOffsetRequestHeader.class);

        long offset =
                this.brokerController.getConsumerOffsetManager().queryOffset(
                    requestHeader.getConsumerGroup(), requestHeader.getTopic(), requestHeader.getQueueId());

        // 订阅组存在
        if (offset >= 0) {
            responseHeader.setOffset(offset);
            response.setCode(ResponseCode.SUCCESS);
            response.setRemark(null);
        }
        // 订阅组不存在
        else {
            long minOffset =
                    this.brokerController.getMessageStore().getMinOffsetInQuque(requestHeader.getTopic(),
                        requestHeader.getQueueId());
            // 订阅组不存在情况下,如果这个队列的消息最小Offset是0,则表示这个Topic上线时间不长,服务器堆积的数据也不多,那么这个订阅组就从0开始消费。
            // 尤其对于Topic队列数动态扩容时,必须要从0开始消费。
            if (minOffset <= 0) {
                responseHeader.setOffset(0L);
                response.setCode(ResponseCode.SUCCESS);
                response.setRemark(null);
            }
            // 新版本服务器不做消费进度纠正
            else {
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

        RemotingCommand response = this.remotingClient.invokeSync(addr, request, timeoutMillis);
        assert response != null;
        switch (response.getCode()) {
        case ResponseCode.SUCCESS: {
            QueryConsumerOffsetResponseHeader responseHeader =
                    (QueryConsumerOffsetResponseHeader) response
                        .decodeCommandCustomHeader(QueryConsumerOffsetResponseHeader.class);

            return responseHeader.getOffset();
        }
        default:
            break;
        }
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

        RemotingCommand response = this.remotingClient.invokeSync(addr, request, timeoutMillis);
        assert response != null;
        switch (response.getCode()) {
        case ResponseCode.SUCCESS: {
            QueryConsumerOffsetResponseHeader responseHeader =
                    (QueryConsumerOffsetResponseHeader) response
                        .decodeCommandCustomHeader(QueryConsumerOffsetResponseHeader.class);

            return responseHeader.getOffset();
        }
        default:
            break;
        }
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

    private RemotingCommand queryConsumerOffset(ChannelHandlerContext ctx, RemotingCommand request)
            throws RemotingCommandException {
        final RemotingCommand response =
                RemotingCommand.createResponseCommand(QueryConsumerOffsetResponseHeader.class);
        final QueryConsumerOffsetResponseHeader responseHeader =
                (QueryConsumerOffsetResponseHeader) response.getCustomHeader();
        final QueryConsumerOffsetRequestHeader requestHeader =
                (QueryConsumerOffsetRequestHeader) request
                    .decodeCommandCustomHeader(QueryConsumerOffsetRequestHeader.class);

        long offset =
                this.brokerController.getConsumerOffsetManager().queryOffset(
                    requestHeader.getConsumerGroup(), requestHeader.getTopic(), requestHeader.getQueueId());

        // 订阅组存在
        if (offset >= 0) {
            responseHeader.setOffset(offset);
            response.setCode(ResponseCode.SUCCESS);
            response.setRemark(null);
        }
        // 订阅组不存在
        else {
            long minOffset =
                    this.brokerController.getMessageStore().getMinOffsetInQuque(requestHeader.getTopic(),
                        requestHeader.getQueueId());
            // 订阅组不存在情况下,如果这个队列的消息最小Offset是0,则表示这个Topic上线时间不长,服务器堆积的数据也不多,那么这个订阅组就从0开始消费。
            // 尤其对于Topic队列数动态扩容时,必须要从0开始消费。
            if (minOffset <= 0) {
                responseHeader.setOffset(0L);
                response.setCode(ResponseCode.SUCCESS);
                response.setRemark(null);
            }
            // 新版本服务器不做消费进度纠正
            else {
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

                    .createRequestCommand(MQRequestCode.QUERY_CONSUMER_OFFSET_VALUE, requestHeader);
        RemotingCommand response = this.remotingClient.invokeSync(addr, request, timeoutMillis);
        assert response != null;
        switch (response.getCode()) {
        case ResponseCode.SUCCESS_VALUE: {
            QueryConsumerOffsetResponseHeader responseHeader =
                    (QueryConsumerOffsetResponseHeader) response
                        .decodeCommandCustomHeader(QueryConsumerOffsetResponseHeader.class);

            return responseHeader.getOffset();
        }
        default:
            break;
        }
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

    private RemotingCommand queryConsumerOffset(ChannelHandlerContext ctx, RemotingCommand request)
            throws RemotingCommandException {
        final RemotingCommand response =
                RemotingCommand.createResponseCommand(QueryConsumerOffsetResponseHeader.class);
        final QueryConsumerOffsetResponseHeader responseHeader =
                (QueryConsumerOffsetResponseHeader) response.readCustomHeader();
        final QueryConsumerOffsetRequestHeader requestHeader =
                (QueryConsumerOffsetRequestHeader) request
                    .decodeCommandCustomHeader(QueryConsumerOffsetRequestHeader.class);

        long offset =
                this.brokerController.getConsumerOffsetManager().queryOffset(
                    requestHeader.getConsumerGroup(), requestHeader.getTopic(), requestHeader.getQueueId());

        // 订阅组存在
        if (offset >= 0) {
            responseHeader.setOffset(offset);
            response.setCode(ResponseCode.SUCCESS);
            response.setRemark(null);
        }
        // 订阅组不存在
        else {
            long minOffset =
                    this.brokerController.getMessageStore().getMinOffsetInQuque(requestHeader.getTopic(),
                        requestHeader.getQueueId());
            // 订阅组不存在情况下,如果这个队列的消息最小Offset是0,则表示这个Topic上线时间不长,服务器堆积的数据也不多,那么这个订阅组就从0开始消费。
            // 尤其对于Topic队列数动态扩容时,必须要从0开始消费。
            if (minOffset <= 0) {
                responseHeader.setOffset(0L);
                response.setCode(ResponseCode.SUCCESS);
                response.setRemark(null);
            }
            // 新版本服务器不做消费进度纠正
            else {
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

    private RemotingCommand queryConsumerOffset(ChannelHandlerContext ctx, RemotingCommand request)
            throws RemotingCommandException {
        final RemotingCommand response =
                RemotingCommand.createResponseCommand(QueryConsumerOffsetResponseHeader.class);
        final QueryConsumerOffsetResponseHeader responseHeader =
                (QueryConsumerOffsetResponseHeader) response.getCustomHeader();
        final QueryConsumerOffsetRequestHeader requestHeader =
                (QueryConsumerOffsetRequestHeader) request
                    .decodeCommandCustomHeader(QueryConsumerOffsetRequestHeader.class);

        long offset =
                this.brokerController.getConsumerOffsetManager().queryOffset(
                    requestHeader.getConsumerGroup(), requestHeader.getTopic(), requestHeader.getQueueId());

        // 订阅组存在
        if (offset >= 0) {
            responseHeader.setOffset(offset);
            response.setCode(ResponseCode.SUCCESS);
            response.setRemark(null);
        }
        // 订阅组不存在
        else {
            // 新版本服务器不做消费进度纠正
            if (request.getVersion() >= MQVersion.Version.V3_0_6_SNAPSHOT.ordinal()) {
                response.setCode(ResponseCode.QUERY_NOT_FOUND);
                response.setRemark("Not found, V3_0_6_SNAPSHOT maybe this group consumer boot first");
            }

            // TODO:以下流程待所有客户端都升级后,可以删除此段代码
            else {
                long minOffset =
                        this.brokerController.getMessageStore().getMinOffsetInQuque(requestHeader.getTopic(),
                            requestHeader.getQueueId());
                long maxOffset =
                        this.brokerController.getMessageStore().getMaxOffsetInQuque(requestHeader.getTopic(),
                            requestHeader.getQueueId());

                boolean consumeFromMinEnable = false;
                if (0 == minOffset && maxOffset > 0) {
                    long minCommitLogOffset =
                            this.brokerController.getMessageStore().getCommitLogOffsetInQueue(
                                requestHeader.getTopic(), requestHeader.getQueueId(), minOffset);
                    long maxCommitLogOffset =
                            this.brokerController.getMessageStore().getCommitLogOffsetInQueue(
                                requestHeader.getTopic(), requestHeader.getQueueId(), maxOffset - 1);

                    long memorySpan =
                            (long) (StoreUtil.TotalPhysicalMemorySize * (this.brokerController
                                .getMessageStoreConfig().getAccessMessageInMemoryMaxRatio() / 100.0));

                    long diff = maxCommitLogOffset - minCommitLogOffset;
                    if (diff < memorySpan) {
                        consumeFromMinEnable = true;
                        log.info(
                            "the consumer group[{}] first subscribed, minOffset: {} maxOffset: {}, from min.",//
                            requestHeader.getConsumerGroup(),//
                            minOffset,//
                            maxOffset);
                    }
                }
                else if (minOffset > 0 && maxOffset > 0) {
                    consumeFromMinEnable = false;
                }
                else {
                    consumeFromMinEnable = true;
                    log.info(
                        "the consumer group[{}] first subscribed, minOffset: {} maxOffset: {}, from min, and unknow offset.",//
                        requestHeader.getConsumerGroup(),//
                        minOffset,//
                        maxOffset);
                }

                // 说明这个队列在服务器存储的消息比较少或者没有消息
                // 订阅组消费进度不存在情况下,从0开始消费
                if (consumeFromMinEnable) {
                    responseHeader.setOffset(0L);
                    response.setCode(ResponseCode.SUCCESS);
                    response.setRemark(null);
                }
                else {
                    response.setCode(ResponseCode.QUERY_NOT_FOUND);
View Full Code Here

Examples of com.alibaba.rocketmq.common.protocol.header.QueryConsumerOffsetResponseHeader

        RemotingCommand response = this.remotingClient.invokeSync(addr, request, timeoutMillis);
        assert response != null;
        switch (response.getCode()) {
        case ResponseCode.SUCCESS: {
            QueryConsumerOffsetResponseHeader responseHeader =
                    (QueryConsumerOffsetResponseHeader) response
                        .decodeCommandCustomHeader(QueryConsumerOffsetResponseHeader.class);

            return responseHeader.getOffset();
        }
        default:
            break;
        }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.