private boolean queryAndResponseData(PullMessageTask pullTask) { Tpg tpg = pullTask.getTpg(); MessageQueueCursor cursor = m_queueManager.getCursor(tpg, pullTask.getBrokerLease(), pullTask.getStartOffset()); if (cursor == null) { return false; } Pair<Offset, List<TppConsumerMessageBatch>> p = null; try { p = cursor.next(pullTask.getBatchSize()); } finally { cursor.stop(); } if (p != null) { Offset currentOffset = p.getKey(); List<TppConsumerMessageBatch> batches = p.getValue(); if (batches != null && !batches.isEmpty()) { String ip = NettyUtils.parseChannelRemoteAddr(pullTask.getChannel(), false); for (TppConsumerMessageBatch batch : batches) { // TODO remove legacy code boolean needServerSideAckHolder = pullTask.getPullMessageCommandVersion() < 3 ? true : false; m_queueManager.delivered( batch, tpg.getGroupId(), pullTask.isWithOffset(), needServerSideAckHolder); bizLogDelivered(ip, batch.getMessageMetas(), tpg); } response(pullTask, batches, currentOffset); return true; } else { return false; } } else { return false; } }
private void bizLog( CommandProcessorContext ctx, Map<Integer, MessageBatchWithRawData> rawBatches, int partition) { String ip = NettyUtils.parseChannelRemoteAddr(ctx.getChannel(), false); for (Entry<Integer, MessageBatchWithRawData> entry : rawBatches.entrySet()) { MessageBatchWithRawData batch = entry.getValue(); List<PartialDecodedMessage> msgs = batch.getMessages(); for (PartialDecodedMessage msg : msgs) { BizEvent event = new BizEvent("Message.Received"); event.addData("topic", batch.getTopic()); event.addData("partition", partition); event.addData("priority", entry.getKey()); event.addData("producerIp", ip); event.addData("bornTime", msg.getBornTime()); event.addData("refKey", msg.getKey()); m_bizLogger.log(event); } } }