1 | 'use strict';
|
2 |
|
3 | const Base = require('sdk-base');
|
4 | const address = require('address');
|
5 | const MixAll = require('./mix_all');
|
6 |
|
7 | const defaultOptions = {
|
8 | instanceName: 'DEFAULT',
|
9 | pollNameServerInteval: 30 * 1000,
|
10 | heartbeatBrokerInterval: 30 * 1000,
|
11 | persistConsumerOffsetInterval: 5 * 1000,
|
12 | rebalanceInterval: 10 * 1000,
|
13 | clientIP: address.ip(),
|
14 | unitMode: false,
|
15 | unitName: null,
|
16 |
|
17 | namespace: '',
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | onsAddr: 'http://onsaddr-internet.aliyun.com/rocketmq/nsaddr4client-internet',
|
23 |
|
24 |
|
25 | onsChannel: 'ALIYUN',
|
26 | };
|
27 |
|
28 | class ClientConfig extends Base {
|
29 |
|
30 | |
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | constructor(options) {
|
40 | super(Object.assign({}, defaultOptions, options));
|
41 | this.instanceName = this.options.instanceName;
|
42 | }
|
43 |
|
44 | get clientId() {
|
45 | return this.unitName ?
|
46 | `${this.options.clientIP}@${this.instanceName}@${this.unitName}` :
|
47 | `${this.options.clientIP}@${this.instanceName}`;
|
48 | }
|
49 |
|
50 | get pollNameServerInteval() {
|
51 | return this.options.pollNameServerInteval;
|
52 | }
|
53 |
|
54 | get heartbeatBrokerInterval() {
|
55 | return this.options.heartbeatBrokerInterval;
|
56 | }
|
57 |
|
58 | get persistConsumerOffsetInterval() {
|
59 | return this.options.persistConsumerOffsetInterval;
|
60 | }
|
61 |
|
62 | get rebalanceInterval() {
|
63 | return this.options.rebalanceInterval;
|
64 | }
|
65 |
|
66 | get unitMode() {
|
67 | return this.options.unitMode;
|
68 | }
|
69 |
|
70 | get unitName() {
|
71 | return this.options.unitName;
|
72 | }
|
73 |
|
74 | get namespace() {
|
75 | return this.options.namespace;
|
76 | }
|
77 |
|
78 | formatTopic(topic) {
|
79 | if (this.namespace && (!topic.startsWith(this.namespace) &&
|
80 | !topic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX))) {
|
81 | topic = `${this.namespace}%${topic}`;
|
82 | }
|
83 | return topic;
|
84 | }
|
85 |
|
86 | |
87 |
|
88 |
|
89 | changeInstanceNameToPID() {
|
90 | if (this.instanceName === 'DEFAULT') {
|
91 | this.instanceName = process.pid + '';
|
92 | }
|
93 | }
|
94 | }
|
95 |
|
96 | module.exports = ClientConfig;
|