Skip to content

Commit f4a0138

Browse files
committed
add interface to set dbconfig to plugin
1 parent da519be commit f4a0138

File tree

7 files changed

+92
-32
lines changed

7 files changed

+92
-32
lines changed

api/src/main/java/org/tron/common/logsfilter/IPluginEventListener.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ public interface IPluginEventListener extends ExtensionPoint {
77

88
public void setTopic(int eventType, String topic);
99

10+
public void setDBConfig(String dbConfig);
11+
12+
// start should be called after setServerAddress, setTopic, setDBConfig
13+
public void start();
14+
1015
public void handleBlockEvent(Object data);
1116

1217
public void handleTransactionTrigger(Object data);

app/src/main/java/org/tron/eventplugin/app/PluginLauncher.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class PluginLauncher {
3434
private static final Logger logger = LoggerFactory.getLogger(PluginLauncher.class);
3535

3636
public static void main(String[] args) {
37-
String path = "/Users/tron/workplace/java-tronSubmit/java-tronUseSubmit/develop_event_subscribe/eventplugin/build/plugins/plugin-mongodb-1.0.0.zip";
37+
String path = "/Users/tron/sourcecode/eventplugin/build/plugins/plugin-mongodb-1.0.0.zip";
3838

3939
File dir = new File(path);
4040
// create the plugin manager
@@ -60,15 +60,23 @@ protected CompoundPluginDescriptorFinder createPluginDescriptorFinder() {
6060
listener.setServerAddress("127.0.0.1:27017");
6161
});
6262

63+
eventListeners.forEach(listener -> {
64+
listener.setDBConfig("eventlog|tron|123456");
65+
});
66+
6367
eventListeners.forEach(listener -> {
6468
listener.setTopic(Trigger.BLOCK_TRIGGER, "block");
6569
listener.setTopic(Trigger.TRANSACTION_TRIGGER, "transaction");
6670
listener.setTopic(Trigger.CONTRACTEVENT_TRIGGER, "contractevent");
6771
listener.setTopic(Trigger.CONTRACTLOG_TRIGGER, "contractlog");
6872
});
6973

74+
eventListeners.forEach(listener -> {
75+
listener.start();
76+
});
77+
7078
ObjectMapper objectMapper = new ObjectMapper();
71-
for (int index = 0; index < 666; ++index){
79+
for (int index = 0; index < 1000; ++index){
7280
BlockLogTrigger trigger = new BlockLogTrigger();
7381
trigger.setBlockNumber(index);
7482
trigger.setBlockHash("000000000002f5834df6036318999576bfa23ff1a57e0538fa87d5a90319659e");

plugins/kafkaplugin/src/main/java/org/tron/eventplugin/KafkaEventListener.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,24 @@ public void setServerAddress(String address) {
1919
}
2020

2121
MessageSenderImpl.getInstance().setServerAddress(address);
22-
23-
// MessageSenderImpl should never init until server address is set
24-
MessageSenderImpl.getInstance().init();
2522
}
2623

2724
@Override
2825
public void setTopic(int eventType, String topic) {
2926
MessageSenderImpl.getInstance().setTopic(eventType, topic);
3027
}
3128

29+
@Override
30+
public void setDBConfig(String dbConfig) {
31+
// empty implementation
32+
}
33+
34+
@Override
35+
public void start() {
36+
// MessageSenderImpl should never init until server address is set
37+
MessageSenderImpl.getInstance().init();
38+
}
39+
3240
@Override
3341
public void handleBlockEvent(Object data) {
3442

plugins/mongodbplugin/src/main/java/org/tron/eventplugin/MongodbEventListener.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,24 @@ public void setServerAddress(String address) {
1919
}
2020

2121
MongodbSenderImpl.getInstance().setServerAddress(address);
22-
23-
// MessageSenderImpl should never init until server address is set
24-
MongodbSenderImpl.getInstance().init();
2522
}
2623

2724
@Override
2825
public void setTopic(int eventType, String topic) {
2926
MongodbSenderImpl.getInstance().setTopic(eventType, topic);
3027
}
3128

29+
@Override
30+
public void setDBConfig(String dbConfig) {
31+
MongodbSenderImpl.getInstance().setDBConfig(dbConfig);
32+
}
33+
34+
@Override
35+
public void start() {
36+
// MessageSenderImpl should never init until server address is set
37+
MongodbSenderImpl.getInstance().init();
38+
}
39+
3240
@Override
3341
public void handleBlockEvent(Object data) {
3442

plugins/mongodbplugin/src/main/java/org/tron/eventplugin/MongodbSenderImpl.java

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ public class MongodbSenderImpl{
3535
private MongoManager mongoManager;
3636
private Map<String, MongoTemplate> mongoTemplateMap;
3737

38+
private String dbName;
39+
private String dbUserName;
40+
private String dbPassword;
41+
3842
private MongoConfig mongoConfig;
3943

4044
public static MongodbSenderImpl getInstance(){
@@ -49,6 +53,23 @@ public static MongodbSenderImpl getInstance(){
4953
return instance;
5054
}
5155

56+
public void setDBConfig(String dbConfig){
57+
if (StringUtils.isNullOrEmpty(dbConfig)){
58+
return;
59+
}
60+
61+
String[] params = dbConfig.split("\\|");
62+
if (params.length != 3){
63+
return;
64+
}
65+
66+
dbName = params[0];
67+
dbUserName = params[1];
68+
dbPassword = params[2];
69+
70+
loadMongoConfig();
71+
}
72+
5273
public void setServerAddress(final String serverAddress){
5374
if (StringUtils.isNullOrEmpty(serverAddress)){
5475
return;
@@ -77,13 +98,6 @@ public void setServerAddress(final String serverAddress){
7798

7899
mongoConfig.setHost(mongoHostName);
79100
mongoConfig.setPort(mongoPort);
80-
81-
loadMongoConfig();
82-
83-
if (Objects.isNull(mongoManager)){
84-
mongoManager = new MongoManager();
85-
mongoManager.initConfig(mongoConfig);
86-
}
87101
}
88102

89103
public void init(){
@@ -92,16 +106,40 @@ public void init(){
92106
return;
93107
}
94108

109+
if (Objects.isNull(mongoManager)){
110+
mongoManager = new MongoManager();
111+
mongoManager.initConfig(mongoConfig);
112+
}
113+
114+
mongoTemplateMap = new HashMap<>();
115+
createCollections();
116+
95117
triggerProcessThread = new Thread(triggerProcessLoop);
96118
triggerProcessThread.start();
97119

98-
mongoTemplateMap = new HashMap<>();
99120
loaded = true;
100121
}
101122

102-
private void loadMongoConfig(){
123+
private void createCollections(){
124+
mongoManager.createCollection(blockTopic);
125+
createMongoTemplate(blockTopic);
126+
127+
mongoManager.createCollection(transactionTopic);
128+
createMongoTemplate(transactionTopic);
103129

130+
mongoManager.createCollection(contractLogTopic);
131+
createMongoTemplate(contractLogTopic);
132+
133+
mongoManager.createCollection(contractEventTopic);
134+
createMongoTemplate(contractEventTopic);
135+
}
136+
137+
private void loadMongoConfig(){
104138
if (Objects.isNull(mongoConfig)){
139+
mongoConfig = new MongoConfig();
140+
}
141+
142+
if (StringUtils.isNullOrEmpty(dbName)){
105143
return;
106144
}
107145

@@ -114,26 +152,20 @@ private void loadMongoConfig(){
114152
}
115153
properties.load(input);
116154

117-
String dbName = properties.getProperty("mongo.dbname");
118-
String userName = properties.getProperty("mongo.username");
119-
String password = properties.getProperty("mongo.password");
120-
121155
int connectionsPerHost = Integer.parseInt(properties.getProperty("mongo.connectionsPerHost"));
122156
int threadsAllowedToBlockForConnectionMultiplie = Integer.parseInt(
123157
properties.getProperty("mongo.threadsAllowedToBlockForConnectionMultiplier"));
124158

125159
mongoConfig.setDbName(dbName);
126-
mongoConfig.setUsername(userName);
127-
mongoConfig.setPassword(password);
128-
160+
mongoConfig.setUsername(dbUserName);
161+
mongoConfig.setPassword(dbPassword);
129162
mongoConfig.setConnectionsPerHost(connectionsPerHost);
130163
mongoConfig.setThreadsAllowedToBlockForConnectionMultiplier(threadsAllowedToBlockForConnectionMultiplie);
131164
} catch (IOException e) {
132165
e.printStackTrace();
133166
} catch (Exception e){
134167
e.printStackTrace();
135168
}
136-
137169
}
138170

139171
private MongoTemplate createMongoTemplate(final String collectionName){
@@ -177,9 +209,6 @@ else if (triggerType == Constant.CONTRACTLOG_TRIGGER){
177209
else {
178210
return;
179211
}
180-
181-
mongoManager.createCollection(topic);
182-
createMongoTemplate(topic);
183212
}
184213

185214
public void close() {
@@ -209,6 +238,7 @@ public void handleTransactionTrigger(Object data) {
209238
return;
210239
}
211240

241+
System.out.println(data);
212242

213243
MongoTemplate template = mongoTemplateMap.get(transactionTopic);
214244
if (Objects.nonNull(template)) {

plugins/mongodbplugin/src/main/java/org/tron/mongodb/MongoManager.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public void initConfig(MongoConfig config) {
3030
String username = config.getUsername();
3131
String password = config.getPassword();
3232
String databaseName = config.getDbName();
33+
34+
if (StringUtils.isNullOrEmpty(databaseName)){
35+
return;
36+
}
37+
3338
MongoCredential credential = MongoCredential.createScramSha1Credential(username, databaseName,
3439
password.toCharArray());
3540
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
mongo.dbname=eventlog
2-
mongo.username=tron
3-
mongo.password=123456
4-
51
mongo.connectionsPerHost=8
62
mongo.threadsAllowedToBlockForConnectionMultiplier=4
73

0 commit comments

Comments
 (0)