修改:接收消息 String类型 反序列化失败
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.zdemo;
|
||||
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
import org.redkale.util.TypeToken;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -13,4 +14,18 @@ public interface IConsumer<T extends Event> {
|
||||
TypeToken<T> getTypeToken();
|
||||
|
||||
void accept(T t);
|
||||
|
||||
default void accept(String value) {
|
||||
System.out.println(value);
|
||||
if ("com.zdemo.Event<java.lang.String>".equals(getTypeToken().getType().toString())) {
|
||||
String _value = value.split("\"value\":")[1];
|
||||
_value = _value.substring(0, _value.length() - 1);
|
||||
Event t = JsonConvert.root().convertFrom(getTypeToken().getType(), value.replace(_value, "’‘"));
|
||||
t.setValue(_value);
|
||||
accept((T) t);
|
||||
} else {
|
||||
Event t = JsonConvert.root().convertFrom(getTypeToken().getType(), value);
|
||||
accept((T) t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -5,7 +5,6 @@ import com.zdemo.IConsumer;
|
||||
import org.apache.kafka.clients.consumer.ConsumerRecord;
|
||||
import org.apache.kafka.clients.consumer.ConsumerRecords;
|
||||
import org.apache.kafka.clients.consumer.KafkaConsumer;
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
import org.redkale.net.http.RestService;
|
||||
import org.redkale.service.Service;
|
||||
import org.redkale.util.AnyValue;
|
||||
@@ -43,14 +42,13 @@ public abstract class KafakConsumer<T extends Event> implements IConsumer<T>, Se
|
||||
consumer.subscribe(getSubscribes());
|
||||
|
||||
while (true) {
|
||||
|
||||
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
|
||||
for (ConsumerRecord<String, String> record : records) {
|
||||
String value = record.value();
|
||||
try {
|
||||
logger.finest(String.format("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value()));
|
||||
T t = JsonConvert.root().convertFrom(getTypeToken().getType(), record.value());
|
||||
accept(t);
|
||||
accept(value);
|
||||
} catch (Exception e) {
|
||||
logger.warning("event accept error :" + value);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
@@ -2,7 +2,6 @@ package com.zdemo.redis;
|
||||
|
||||
import com.zdemo.Event;
|
||||
import com.zdemo.IConsumer;
|
||||
import org.redkale.convert.json.JsonConvert;
|
||||
import org.redkale.service.Service;
|
||||
import org.redkale.util.AnyValue;
|
||||
|
||||
@@ -61,10 +60,9 @@ public abstract class RedisConsumer<T extends Event> implements IConsumer<T>, Se
|
||||
br.readLine(); //$n len(value)
|
||||
String value = br.readLine(); // value
|
||||
try {
|
||||
T t = JsonConvert.root().convertFrom(getTypeToken().getType(), value);
|
||||
accept(t);
|
||||
accept(value);
|
||||
} catch (Exception e) {
|
||||
logger.warning("event fmt error :" + value);
|
||||
logger.warning("event accept error :" + value);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user