@Override
public void onEvent(final MessageLogMeta event) {
if (isFirstEventOfLogSegment(event)) {
LOG.info("first event of log segment. event: {}", event);
consumerLogManager.createOffsetFileFor(event.getBaseOffset(), offsets);
}
updateOffset(event);
final ConsumerLog consumerLog = consumerLogManager.getOrCreateConsumerLog(event.getSubject());
if (consumerLog.nextSequence() != event.getSequence()) {
LOG.error("next sequence not equals to max sequence. subject: {}, received seq: {}, received offset: {}, diff: {}",
event.getSubject(), event.getSequence(), event.getWroteOffset(), event.getSequence() - consumerLog.nextSequence());
}
final boolean success = consumerLog.putMessageLogOffset(event.getSequence(), event.getWroteOffset(), event.getWroteBytes(), event.getHeaderSize());
checkpointManager.updateMessageReplayState(event);
messageEventBus.post(new ConsumerLogWroteEvent(event.getSubject(), success));
}