基于springboot实现简单redis订阅消息
配置
import com.ecolifr.reids.sub.listener.AListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.ChannelTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
@Configuration
public class RedisConf {
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory redisConnectionFactory, AListener aListener) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.addMessageListener(aListener, new ChannelTopic("a"));
container.setConnectionFactory(redisConnectionFactory);
return container;
}
}
消息处理
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Component;
@Slf4j
@RequiredArgsConstructor
@Component
public class AListener implements MessageListener {
@Override
public void onMessage(Message message, byte[] bytes) {
log.info("订阅主题:{},消息:{}", StringRedisSerializer.UTF_8.deserialize(message.getChannel()), StringRedisSerializer.UTF_8.deserialize(message.getBody()));
}
}
pom
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>