Package com.alibaba.otter.canal.protocol

Examples of com.alibaba.otter.canal.protocol.Message


    public Message getWithoutAck(int batchSize) throws CanalClientException {
        int times = 0;
        while (times < retryTimes) {
            try {
                Message msg = currentConnector.getWithoutAck(batchSize);
                return msg;
            } catch (Throwable t) {
                logger.warn("something goes wrong when getWithoutAck data from server:{}\n{}",
                    currentConnector.getAddress(),
                    ExceptionUtils.getFullStackTrace(t));
View Full Code Here


    public Message getWithoutAck(int batchSize, Long timeout, TimeUnit unit) throws CanalClientException {
        int times = 0;
        while (times < retryTimes) {
            try {
                Message msg = currentConnector.getWithoutAck(batchSize, timeout, unit);
                return msg;
            } catch (Throwable t) {
                logger.warn("something goes wrong when getWithoutAck data from server:{}\n{}",
                    currentConnector.getAddress(),
                    ExceptionUtils.getFullStackTrace(t));
View Full Code Here

                MDC.put("destination", destination);
                connector.connect();
                connector.subscribe("");
                connector.rollback();
                while (running) {
                    Message message = connector.getWithoutAck(batchSize); // 获取指定数量的数据
                    long batchId = message.getId();
                    int size = message.getEntries().size();
                    if (batchId == -1 || size == 0) {
                        // try {
                        // Thread.sleep(1000);
                        // } catch (InterruptedException e) {
                        // }
                    } else {
                        printSummary(message, batchId, size);
                        printEntry(message.getEntries());
                    }

                    connector.ack(batchId); // 提交确认
                    // connector.rollback(batchId); // 处理失败, 回滚数据
                }
View Full Code Here

        }
    }

    public Message get(int batchSize) throws CanalClientException {
        waitClientRunning();
        Message msg = getWithoutAck(batchSize);
        ack(batchSize);
        return msg;
    }
View Full Code Here

                    if (!p.getCompression().equals(Compression.NONE)) {
                        throw new CanalClientException("compression is not supported in this connector");
                    }

                    Messages messages = Messages.parseFrom(p.getBody());
                    Message result = new Message(messages.getBatchId());
                    for (ByteString byteString : messages.getMessagesList()) {
                        result.addEntry(Entry.parseFrom(byteString));
                    }
                    return result;
                }
                case ACK: {
                    Ack ack = Ack.parseFrom(p.getBody());
View Full Code Here

    public Message get(int batchSize) throws CanalClientException {
        int times = 0;
        while (times < retryTimes) {
            try {
                Message msg = currentConnector.get(batchSize);
                return msg;
            } catch (Throwable t) {
                logger.warn("something goes wrong when getting data from server:{}\n{}", currentConnector.getAddress(),
                            t);
                times++;
View Full Code Here

    public Message getWithoutAck(int batchSize) throws CanalClientException {
        int times = 0;
        while (times < retryTimes) {
            try {
                Message msg = currentConnector.getWithoutAck(batchSize);
                return msg;
            } catch (Throwable t) {
                logger.warn("something goes wrong when getWithoutAck data from server:{}\n{}",
                            currentConnector.getAddress(), t);
                times++;
View Full Code Here

            events = getEvents(canalInstance.getEventStore(), start, batchSize, timeout, unit);

            if (CollectionUtils.isEmpty(events.getEvents())) {
                logger.debug("get successfully, clientId:{} batchSize:{} but result is null", new Object[] {
                        clientIdentity.getClientId(), batchSize });
                return new Message(-1, new ArrayList<Entry>()); // 返回空包,避免生成batchId,浪费性能
            } else {
                // 记录到流式信息
                Long batchId = canalInstance.getMetaManager().addBatch(clientIdentity, events.getPositionRange());
                // 直接提交ack
                ack(clientIdentity, batchId);
                List<Entry> entrys = Lists.transform(events.getEvents(), new Function<Event, Entry>() {

                    public Entry apply(Event input) {
                        return input.getEntry();
                    }
                });

                logger.info(
                            "get successfully, clientId:{} batchSize:{} real size is {} and result is [batchId:{} , position:{}]",
                            new Object[] { clientIdentity.getClientId(), batchSize, entrys.size(), batchId,
                                    events.getPositionRange() });
                return new Message(batchId, entrys);
            }
        }
    }
View Full Code Here

            }

            if (CollectionUtils.isEmpty(events.getEvents())) {
                logger.debug("getWithoutAck successfully, clientId:{} batchSize:{} but result is null", new Object[] {
                        clientIdentity.getClientId(), batchSize });
                return new Message(-1, new ArrayList<Entry>()); // 返回空包,避免生成batchId,浪费性能
            } else {
                // 记录到流式信息
                Long batchId = canalInstance.getMetaManager().addBatch(clientIdentity, events.getPositionRange());
                List<Entry> entrys = Lists.transform(events.getEvents(), new Function<Event, Entry>() {

                    public Entry apply(Event input) {
                        return input.getEntry();
                    }
                });

                logger.info(
                            "getWithoutAck successfully, clientId:{} batchSize:{}  real size is {} and result is [batchId:{} , position:{}]",
                            new Object[] { clientIdentity.getClientId(), batchSize, entrys.size(), batchId,
                                    events.getPositionRange() });
                return new Message(batchId, entrys);
            }

        }
    }
View Full Code Here

            events = getEvents(canalInstance.getEventStore(), start, batchSize, timeout, unit);

            if (CollectionUtils.isEmpty(events.getEvents())) {
                logger.debug("get successfully, clientId:{} batchSize:{} but result is null", new Object[] {
                        clientIdentity.getClientId(), batchSize });
                return new Message(-1, new ArrayList<Entry>()); // 返回空包,避免生成batchId,浪费性能
            } else {
                // 记录到流式信息
                Long batchId = canalInstance.getMetaManager().addBatch(clientIdentity, events.getPositionRange());
                // 直接提交ack
                ack(clientIdentity, batchId);
                List<Entry> entrys = Lists.transform(events.getEvents(), new Function<Event, Entry>() {

                    public Entry apply(Event input) {
                        return input.getEntry();
                    }
                });

                logger.info(
                            "get successfully, clientId:{} batchSize:{} real size is {} and result is [batchId:{} , position:{}]",
                            new Object[] { clientIdentity.getClientId(), batchSize, entrys.size(), batchId,
                                    events.getPositionRange() });
                return new Message(batchId, entrys);
            }
        }
    }
View Full Code Here

TOP

Related Classes of com.alibaba.otter.canal.protocol.Message

Copyright © 2018 www.massapicom. 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.