case RequestCode.SEND_MESSAGE_V2:
requestHeaderV2 =
(SendMessageRequestHeaderV2) request
.decodeCommandCustomHeader(SendMessageRequestHeaderV2.class);
case RequestCode.SEND_MESSAGE:
SendMessageContext mqtraceContext = null;
SendMessageRequestHeader requestHeader = null;
if (null == requestHeaderV2) {
requestHeader =
(SendMessageRequestHeader) request
.decodeCommandCustomHeader(SendMessageRequestHeader.class);
}
else {
requestHeader = SendMessageRequestHeaderV2.createSendMessageRequestHeaderV1(requestHeaderV2);
}
// 消息轨迹:记录到达 broker 的消息
if (this.hasSendMessageHook()) {
mqtraceContext = new SendMessageContext();
mqtraceContext.setProducerGroup(requestHeader.getProducerGroup());
mqtraceContext.setTopic(requestHeader.getTopic());
mqtraceContext.setMsgProps(requestHeader.getProperties());
mqtraceContext.setBornHost(RemotingHelper.parseChannelRemoteAddr(ctx.channel()));
mqtraceContext.setBrokerAddr(this.brokerController.getBrokerAddr());
this.executeSendMessageHookBefore(ctx, request, mqtraceContext);
}
final RemotingCommand response = this.sendMessage(ctx, request, mqtraceContext, requestHeader);