zhub-client/src/com/zdemo/AbstractConsumer.java
2020-11-30 09:25:23 +08:00

60 lines
1.3 KiB
Java

package com.zdemo;
import org.redkale.convert.json.JsonConvert;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @author Liang
* @data 2020-09-05 23:18
*/
public abstract class AbstractConsumer implements IConsumer {
public final Map<String, EventType> eventMap = new HashMap<>();
public abstract String getGroupid();
public boolean preInit() {
return true;
}
public void addEventType(EventType... eventType) {
for (EventType type : eventType) {
String[] topics = type.topic.split(",");
for (String topic : topics) {
if (topic.isEmpty()) {
continue;
}
eventMap.put(topic, type);
}
}
}
@Override
public final Set<String> getTopics() {
if (!eventMap.isEmpty()) {
return eventMap.keySet();
}
return Set.of("-");
}
@Override
public final void accept(String topic, String value) {
EventType eventType = eventMap.get(topic);
Object data = null;
if ("java.lang.String".equals(eventType.typeToken.getType().getTypeName())) {
data = value;
} else {
data = JsonConvert.root().convertFrom(eventType.typeToken.getType(), value);
}
eventType.accept(data);
}
}