15
15
*/
16
16
package com .alibaba .rocketmq .broker ;
17
17
18
- import java .io .IOException ;
19
- import java .util .Properties ;
20
- import java .util .concurrent .BlockingQueue ;
21
- import java .util .concurrent .ExecutorService ;
22
- import java .util .concurrent .Executors ;
23
- import java .util .concurrent .LinkedBlockingQueue ;
24
- import java .util .concurrent .ScheduledExecutorService ;
25
- import java .util .concurrent .ThreadPoolExecutor ;
26
- import java .util .concurrent .TimeUnit ;
27
-
28
- import org .slf4j .Logger ;
29
- import org .slf4j .LoggerFactory ;
30
-
31
- import com .alibaba .rocketmq .broker .client .ClientHousekeepingService ;
32
- import com .alibaba .rocketmq .broker .client .ConsumerIdsChangeListener ;
33
- import com .alibaba .rocketmq .broker .client .ConsumerManager ;
34
- import com .alibaba .rocketmq .broker .client .DefaultConsumerIdsChangeListener ;
35
- import com .alibaba .rocketmq .broker .client .ProducerManager ;
18
+ import com .alibaba .rocketmq .broker .client .*;
36
19
import com .alibaba .rocketmq .broker .client .net .Broker2Client ;
37
20
import com .alibaba .rocketmq .broker .client .rebalance .RebalanceLockManager ;
38
21
import com .alibaba .rocketmq .broker .filtersrv .FilterServerManager ;
39
22
import com .alibaba .rocketmq .broker .longpolling .PullRequestHoldService ;
23
+ import com .alibaba .rocketmq .broker .mqtrace .ConsumeMessageHook ;
24
+ import com .alibaba .rocketmq .broker .mqtrace .SendMessageHook ;
40
25
import com .alibaba .rocketmq .broker .offset .ConsumerOffsetManager ;
41
26
import com .alibaba .rocketmq .broker .out .BrokerOuterAPI ;
42
- import com .alibaba .rocketmq .broker .processor .AdminBrokerProcessor ;
43
- import com .alibaba .rocketmq .broker .processor .ClientManageProcessor ;
44
- import com .alibaba .rocketmq .broker .processor .EndTransactionProcessor ;
45
- import com .alibaba .rocketmq .broker .processor .PullMessageProcessor ;
46
- import com .alibaba .rocketmq .broker .processor .QueryMessageProcessor ;
47
- import com .alibaba .rocketmq .broker .processor .SendMessageProcessor ;
27
+ import com .alibaba .rocketmq .broker .processor .*;
48
28
import com .alibaba .rocketmq .broker .slave .SlaveSynchronize ;
49
29
import com .alibaba .rocketmq .broker .stats .BrokerStats ;
50
30
import com .alibaba .rocketmq .broker .stats .BrokerStatsManager ;
51
31
import com .alibaba .rocketmq .broker .subscription .SubscriptionGroupManager ;
52
32
import com .alibaba .rocketmq .broker .topic .TopicConfigManager ;
53
- import com .alibaba .rocketmq .common .BrokerConfig ;
54
- import com .alibaba .rocketmq .common .DataVersion ;
55
- import com .alibaba .rocketmq .common .MixAll ;
56
- import com .alibaba .rocketmq .common .ThreadFactoryImpl ;
57
- import com .alibaba .rocketmq .common .UtilAll ;
33
+ import com .alibaba .rocketmq .common .*;
58
34
import com .alibaba .rocketmq .common .constant .LoggerName ;
59
35
import com .alibaba .rocketmq .common .namesrv .RegisterBrokerResult ;
60
36
import com .alibaba .rocketmq .common .protocol .RequestCode ;
69
45
import com .alibaba .rocketmq .store .MessageStore ;
70
46
import com .alibaba .rocketmq .store .config .BrokerRole ;
71
47
import com .alibaba .rocketmq .store .config .MessageStoreConfig ;
48
+ import org .slf4j .Logger ;
49
+ import org .slf4j .LoggerFactory ;
50
+
51
+ import java .io .IOException ;
52
+ import java .util .ArrayList ;
53
+ import java .util .List ;
54
+ import java .util .Properties ;
55
+ import java .util .concurrent .*;
72
56
73
57
74
58
/**
@@ -346,7 +330,8 @@ public void registerProcessor() {
346
330
/**
347
331
* SendMessageProcessor
348
332
*/
349
- NettyRequestProcessor sendProcessor = new SendMessageProcessor (this );
333
+ SendMessageProcessor sendProcessor = new SendMessageProcessor (this );
334
+ sendProcessor .registerSendMessageHook (sendMessageHookList );
350
335
this .remotingServer .registerProcessor (RequestCode .SEND_MESSAGE , sendProcessor ,
351
336
this .sendMessageExecutor );
352
337
this .remotingServer .registerProcessor (RequestCode .CONSUMER_SEND_MSG_BACK , sendProcessor ,
@@ -357,6 +342,7 @@ public void registerProcessor() {
357
342
*/
358
343
this .remotingServer .registerProcessor (RequestCode .PULL_MESSAGE , this .pullMessageProcessor ,
359
344
this .pullMessageExecutor );
345
+ this .pullMessageProcessor .registerConsumeMessageHook (consumeMessageHookList );
360
346
361
347
/**
362
348
* QueryMessageProcessor
@@ -387,8 +373,9 @@ public void registerProcessor() {
387
373
/**
388
374
* Default
389
375
*/
390
- this .remotingServer
391
- .registerDefaultProcessor (new AdminBrokerProcessor (this ), this .adminBrokerExecutor );
376
+ AdminBrokerProcessor adminProcessor = new AdminBrokerProcessor (this );
377
+ adminProcessor .registerConsumeMessageHook (this .consumeMessageHookList );
378
+ this .remotingServer .registerDefaultProcessor (adminProcessor , this .adminBrokerExecutor );
392
379
}
393
380
394
381
@@ -765,6 +752,24 @@ public void run() {
765
752
}, 5 , TimeUnit .MINUTES );
766
753
}
767
754
755
+ // 注册发送消息轨迹 hook
756
+ private final List <SendMessageHook > sendMessageHookList = new ArrayList <SendMessageHook >();
757
+
758
+
759
+ public void registerSendMessageHook (final SendMessageHook hook ) {
760
+ this .sendMessageHookList .add (hook );
761
+ log .info ("register SendMessageHook Hook, {}" , hook .hookName ());
762
+ }
763
+
764
+ // 注册消费消息轨迹 hook
765
+ private final List <ConsumeMessageHook > consumeMessageHookList = new ArrayList <ConsumeMessageHook >();
766
+
767
+
768
+ public void registerConsumeMessageHook (final ConsumeMessageHook hook ) {
769
+ this .consumeMessageHookList .add (hook );
770
+ log .info ("register ConsumeMessageHook Hook, {}" , hook .hookName ());
771
+ }
772
+
768
773
769
774
public void registerServerRPCHook (RPCHook rpcHook ) {
770
775
getRemotingServer ().registerRPCHook (rpcHook );
0 commit comments