.
This commit is contained in:
parent
3c084723ed
commit
1ce4ccdbc7
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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>() {
|
||||||
|
Loading…
Reference in New Issue
Block a user