增加FstSerializationRedisSerializer, 更新后请重新发布协议,设备型号以及重新激活全部设备.
This commit is contained in:
parent
ae689c71c6
commit
b7e4fda13a
|
|
@ -216,6 +216,13 @@
|
|||
<version>${hsweb.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>de.ruedigermoeller</groupId>
|
||||
<artifactId>fst</artifactId>
|
||||
<version>2.57</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
package org.jetlinks.community.standalone.configuration;
|
||||
|
||||
import org.jetlinks.community.standalone.configuration.fst.FstSerializationRedisSerializer;
|
||||
import org.nustaq.serialization.FSTConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory;
|
||||
import org.springframework.data.redis.core.ReactiveRedisTemplate;
|
||||
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||
|
||||
@Configuration
|
||||
public class JetLinksRedisConfiguration {
|
||||
|
||||
@Bean
|
||||
public ReactiveRedisTemplate<Object, Object> reactiveRedisTemplate(
|
||||
ReactiveRedisConnectionFactory reactiveRedisConnectionFactory, ResourceLoader resourceLoader) {
|
||||
|
||||
FstSerializationRedisSerializer serializer = new FstSerializationRedisSerializer(() -> {
|
||||
FSTConfiguration configuration = FSTConfiguration.createDefaultConfiguration()
|
||||
.setForceSerializable(true);
|
||||
configuration.setClassLoader(resourceLoader.getClassLoader());
|
||||
return configuration;
|
||||
});
|
||||
@SuppressWarnings("all")
|
||||
RedisSerializationContext<Object, Object> serializationContext = RedisSerializationContext
|
||||
.newSerializationContext()
|
||||
.key((RedisSerializer)new StringRedisSerializer())
|
||||
.value(serializer)
|
||||
.hashKey(StringRedisSerializer.UTF_8)
|
||||
.hashValue(serializer)
|
||||
.build();
|
||||
|
||||
return new ReactiveRedisTemplate<>(reactiveRedisConnectionFactory, serializationContext);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package org.jetlinks.community.standalone.configuration.fst;
|
||||
|
||||
import io.netty.util.concurrent.FastThreadLocal;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import org.nustaq.serialization.FSTConfiguration;
|
||||
import org.nustaq.serialization.FSTObjectInput;
|
||||
import org.nustaq.serialization.FSTObjectOutput;
|
||||
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||
import org.springframework.data.redis.serializer.SerializationException;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class FstSerializationRedisSerializer implements RedisSerializer<Object> {
|
||||
|
||||
private final FastThreadLocal<FSTConfiguration> configuration;
|
||||
|
||||
public FstSerializationRedisSerializer(Supplier<FSTConfiguration> supplier) {
|
||||
|
||||
this(new FastThreadLocal<FSTConfiguration>() {
|
||||
@Override
|
||||
protected FSTConfiguration initialValue() {
|
||||
return supplier.get();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public byte[] serialize(Object o) throws SerializationException {
|
||||
ByteArrayOutputStream arr = new ByteArrayOutputStream(1024);
|
||||
try (FSTObjectOutput output = configuration.get().getObjectOutput(arr)) {
|
||||
output.writeObject(o);
|
||||
}
|
||||
return arr.toByteArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public Object deserialize(byte[] bytes) throws SerializationException {
|
||||
|
||||
try (FSTObjectInput input = configuration.get().getObjectInput(bytes)) {
|
||||
return input.readObject();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue