This commit is contained in:
lxy
2020-11-13 18:23:23 +08:00
parent 1603140c1c
commit 9138790fd2
6 changed files with 22 additions and 16 deletions

View File

@@ -2,9 +2,7 @@ package com.zdemo;
import org.redkale.convert.json.JsonConvert;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.*;
/**
* @author Liang
@@ -33,8 +31,12 @@ public abstract class AbstractConsumer implements IConsumer {
}
@Override
public final Set<String> getSubscribes() {
return eventMap.keySet();
public final Set<String> getTopics() {
Set<String> keySet = eventMap.keySet();
if (keySet.isEmpty()) {
keySet.add("-");
}
return keySet;
}
@Override

View File

@@ -13,7 +13,9 @@ public interface IConsumer<T extends Event> {
Logger logger = Logger.getLogger(IConsumer.class.getSimpleName());
Collection<String> getSubscribes();
Collection<String> getTopics();
<T> void accept(String topic, String record);
void addEventType(EventType... eventType);
void accept(String topic, String record);
}

View File

@@ -19,8 +19,6 @@ import java.util.Properties;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.logging.Level;
import static java.util.Arrays.asList;
/**
* 消费
*/
@@ -66,7 +64,7 @@ public abstract class KafakConsumer extends AbstractConsumer implements IConsume
try {
props.put("group.id", getGroupid());
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(asList("_"));
consumer.subscribe(getTopics());
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1_000));
records.forEach(record -> {
@@ -84,7 +82,7 @@ public abstract class KafakConsumer extends AbstractConsumer implements IConsume
while (!queue.isEmpty()) {
queue.clear();
consumer.unsubscribe();
consumer.subscribe(getSubscribes());
consumer.subscribe(getTopics());
}
}
} catch (WakeupException ex) {

View File

@@ -38,6 +38,9 @@ public abstract class PulsarConsumer extends AbstractConsumer implements IConsum
@Override
public void init(AnyValue config) {
if (!preInit()) {
return;
}
new Thread(() -> {
try {
client = PulsarClient.builder()
@@ -45,7 +48,7 @@ public abstract class PulsarConsumer extends AbstractConsumer implements IConsum
.build();
consumer = client.newConsumer()
.topics(new ArrayList<>(getSubscribes()))
.topics(new ArrayList<>(getTopics()))
.subscriptionName(getGroupid())
.subscriptionType(SubscriptionType.Shared)
.subscribe();
@@ -56,7 +59,7 @@ public abstract class PulsarConsumer extends AbstractConsumer implements IConsum
queue.clear();
consumer.unsubscribe();
consumer = client.newConsumer()
.topics(new ArrayList<>(getSubscribes()))
.topics(new ArrayList<>(getTopics()))
.subscriptionName(getGroupid())
.subscriptionType(SubscriptionType.Shared)
.subscribe();

View File

@@ -40,10 +40,10 @@ public abstract class RedisConsumer extends AbstractConsumer implements IConsume
writer.flush();
StringBuffer buf = new StringBuffer("SUBSCRIBE");
for (String topic : getSubscribes()) {
for (String topic : getTopics()) {
buf.append(" ").append(topic);
}
buf.append(" _\r\n");
buf.append("\r\n");
writer.write(buf.toString());
writer.flush();