新增:

1、redis 发布订阅
2、发布订阅模型修改
This commit is contained in:
lxy
2020-08-15 00:38:11 +08:00
parent 30291fb6e7
commit 60a5bd300f
13 changed files with 266 additions and 152 deletions

View File

@@ -0,0 +1,50 @@
package com.zdemo.test;
import com.zdemo.Event;
import com.zdemo.redis.RedisProducer;
import org.junit.Test;
import org.redkale.boot.Application;
/**
* 消息发布订阅测试
*/
public class AppTest {
@Test
public void runConsumer() {
try {
// 启动并开启消费监听
Application.singleton(MyConsumer.class);
try {
Thread.sleep(15_000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void runProducer() {
try {
RedisProducer producer = Application.singleton(RedisProducer.class);
Event<Integer> event = new Event<>();
event.setTopic("c");
event.setKey("abx");
event.setValue(2314);
producer.send(event);
try {
Thread.sleep(1_000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -1,11 +0,0 @@
package com.zdemo.test;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Event<V> {
private String key;
private V value;
}

View File

@@ -1,18 +1,22 @@
package com.zdemo.test;
import com.zdemo.kafak.KafakConsumer;
import com.zdemo.kafak.KafakProducer;
import org.junit.Test;
import com.zdemo.Event;
import com.zdemo.redis.RedisConsumer;
import org.redkale.convert.json.JsonConvert;
import org.redkale.util.TypeToken;
import java.util.Collection;
import java.util.List;
public class MyConsumer extends KafakConsumer<Event<Integer>> {
public class MyConsumer extends RedisConsumer<Event<Integer>> {
public String getGroupid() {
return "group-test"; //quest、user、im、live
}
@Override
public Collection<String> getSubscribes() {
return List.of("a");
return List.of("a", "b", "c");
}
@Override
@@ -23,32 +27,11 @@ public class MyConsumer extends KafakConsumer<Event<Integer>> {
@Override
public void accept(Event<Integer> event) {
System.out.println("我收到了消息 key" + event.getKey() + " value:" + event.getValue());
}
@Test
public void run() {
MyConsumer consumer = new MyConsumer();
consumer.init(null);
try {
Thread.sleep(15_000);
} catch (InterruptedException e) {
e.printStackTrace();
switch (event.getTopic()) {
case "a" -> System.out.println("我收到了消息 主题A 事件:" + JsonConvert.root().convertTo(event));
case "b" -> System.out.println("我收到了消息 主题B 事件:" + JsonConvert.root().convertTo(event));
case "c" -> System.out.println("我收到了消息 主题C 事件:" + JsonConvert.root().convertTo(event));
}
}
@Test
public void runProducer() {
KafakProducer<Event> producer = new KafakProducer();
producer.init(null);
Event<Integer> event = new Event<>();
event.setKey("XXX");
event.setValue(2314);
producer.send("a", event);
producer.destroy(null);
}
}