.
This commit is contained in:
parent
1603140c1c
commit
9138790fd2
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
||||
|
@ -2,6 +2,7 @@ package com.zdemo.test;
|
||||
|
||||
import com.zdemo.Event;
|
||||
import com.zdemo.EventType;
|
||||
import com.zdemo.IConsumer;
|
||||
import com.zdemo.IProducer;
|
||||
import com.zdemo.pulsar.PulsarProducer;
|
||||
import org.junit.Test;
|
||||
@ -23,7 +24,7 @@ public class AppTest {
|
||||
public void runConsumer() {
|
||||
try {
|
||||
//启动并开启消费监听
|
||||
MyConsumer consumer = Application.singleton(MyConsumer.class);
|
||||
IConsumer consumer = Application.singleton(MyConsumer.class);
|
||||
|
||||
consumer.addEventType(
|
||||
EventType.of("a1", new TypeToken<Float>() {
|
||||
|
Loading…
Reference in New Issue
Block a user