This commit is contained in:
lxy 2020-11-13 18:23:23 +08:00
parent 3c084723ed
commit 1ce4ccdbc7
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 org.redkale.convert.json.JsonConvert;
import java.util.HashMap; import java.util.*;
import java.util.Map;
import java.util.Set;
/** /**
* @author Liang * @author Liang
@ -33,8 +31,12 @@ public abstract class AbstractConsumer implements IConsumer {
} }
@Override @Override
public final Set<String> getSubscribes() { public final Set<String> getTopics() {
return eventMap.keySet(); Set<String> keySet = eventMap.keySet();
if (keySet.isEmpty()) {
keySet.add("-");
}
return keySet;
} }
@Override @Override

View File

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

View File

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

View File

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

View File

@ -2,6 +2,7 @@ package com.zdemo.test;
import com.zdemo.Event; import com.zdemo.Event;
import com.zdemo.EventType; import com.zdemo.EventType;
import com.zdemo.IConsumer;
import com.zdemo.IProducer; import com.zdemo.IProducer;
import com.zdemo.pulsar.PulsarProducer; import com.zdemo.pulsar.PulsarProducer;
import org.junit.Test; import org.junit.Test;
@ -23,7 +24,7 @@ public class AppTest {
public void runConsumer() { public void runConsumer() {
try { try {
//启动并开启消费监听 //启动并开启消费监听
MyConsumer consumer = Application.singleton(MyConsumer.class); IConsumer consumer = Application.singleton(MyConsumer.class);
consumer.addEventType( consumer.addEventType(
EventType.of("a1", new TypeToken<Float>() { EventType.of("a1", new TypeToken<Float>() {