public RemotingCommand unregisterClient(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(UnregisterClientResponseHeader.class); final UnregisterClientRequestHeader requestHeader = (UnregisterClientRequestHeader) request.decodeCommandCustomHeader(UnregisterClientRequestHeader.class); ClientChannelInfo clientChannelInfo = new ClientChannelInfo( // ctx.channel(), // requestHeader.getClientID(), // request.getLanguage(), // request.getVersion() // ); // 注销Producer { final String group = requestHeader.getProducerGroup(); if (group != null) { this.brokerController.getProducerManager().unregisterProducer(group, clientChannelInfo); } } // 注销Consumer { final String group = requestHeader.getConsumerGroup(); if (group != null) { this.brokerController.getConsumerManager().unregisterConsumer(group, clientChannelInfo); } } response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
public RemotingCommand heartBeat(ChannelHandlerContext ctx, RemotingCommand request) { RemotingCommand response = RemotingCommand.createResponseCommand(null); HeartbeatData heartbeatData = HeartbeatData.decode(request.getBody(), HeartbeatData.class); ClientChannelInfo clientChannelInfo = new ClientChannelInfo( // ctx.channel(), // heartbeatData.getClientID(), // request.getLanguage(), // request.getVersion() // ); // 注册Consumer for (ConsumerData data : heartbeatData.getConsumerDataSet()) { SubscriptionGroupConfig subscriptionGroupConfig = this.brokerController .getSubscriptionGroupManager() .findSubscriptionGroupConfig(data.getGroupName()); if (null != subscriptionGroupConfig) { String newTopic = MixAll.getRetryTopic(data.getGroupName()); this.brokerController .getTopicConfigManager() .createTopicInSendMessageBackMethod( // newTopic, // subscriptionGroupConfig.getRetryQueueNums(), // PermName.PERM_WRITE | PermName.PERM_READ); } boolean changed = this.brokerController .getConsumerManager() .registerConsumer( // data.getGroupName(), // clientChannelInfo, // data.getConsumeType(), // data.getMessageModel(), // data.getConsumeFromWhere(), // data.getSubscriptionDataSet() // ); if (changed) { log.info( "registerConsumer info changed {} {}", // data.toString(), // RemotingHelper.parseChannelRemoteAddr(ctx.channel()) // ); } } // 注册Producer for (ProducerData data : heartbeatData.getProducerDataSet()) { this.brokerController .getProducerManager() .registerProducer(data.getGroupName(), clientChannelInfo); } response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }