本章花点时间来看下 developed a publish-and-subscribe application with Spring and Redis.
本章要从Redis开始说起:
不管怎样先下载一个吧,Redis有windows版本的。
Windows中redis的下载及安装、设置
下载地址: https://github.com/MicrosoftArchive/redis/releases
打开cmd命令窗口,使用命令进行安装和注册redis到window服务
安装命令:redis-server.exe --service-install redis.windows.conf --loglevel verbose
启动服务命令:redis-server.exe --service-start
关闭服务命令:redis-server.exe --service-stop
接下来我们重新开一个cmd,测试下 :
步骤一:开着Redis.
步骤二:用你熟悉的IDE,创建一个SpringBoot项目,依赖spring Data Redis Access Driver.项目结构如下:我用的springBoot版本是2.2.2
新建一个包和class:
-
package com.dongyu.springbootguids09_redis.messagingredis;
-
-
import java.util.concurrent.atomic.AtomicInteger;
-
-
import org.slf4j.Logger;
-
import org.slf4j.LoggerFactory;
-
-
public
class Receiver {
-
private
static
final Logger LOGGER = LoggerFactory.getLogger(Receiver.class);
-
-
private AtomicInteger counter =
new AtomicInteger();
-
-
public void receiveMessage(String message) {
-
LOGGER.info(
"Received <" + message +
">");
-
counter.incrementAndGet();
-
}
-
-
public int getCount() {
-
return counter.get();
-
}
-
}
再来一个main。启动项
-
package com.dongyu.springbootguids09_redis.messagingredis;
-
-
-
-
import org.slf4j.Logger;
-
import org.slf4j.LoggerFactory;
-
import org.springframework.boot.SpringApplication;
-
import org.springframework.boot.autoconfigure.SpringBootApplication;
-
import org.springframework.context.ApplicationContext;
-
import org.springframework.context.annotation.Bean;
-
import org.springframework.data.redis.connection.RedisConnectionFactory;
-
import org.springframework.data.redis.core.StringRedisTemplate;
-
import org.springframework.data.redis.listener.PatternTopic;
-
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
-
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
-
-
@SpringBootApplication
-
public
class MessagingRedisApplication {
-
-
private
static
final Logger LOGGER = LoggerFactory.getLogger(MessagingRedisApplication.class);
-
-
@Bean
-
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
-
MessageListenerAdapter listenerAdapter) {
-
-
RedisMessageListenerContainer container =
new RedisMessageListenerContainer();
-
container.setConnectionFactory(connectionFactory);
-
container.addMessageListener(listenerAdapter,
new PatternTopic(
"chat"));
-
-
return container;
-
}
-
-
@Bean
-
MessageListenerAdapter listenerAdapter(Receiver receiver) {
-
return
new MessageListenerAdapter(receiver,
"receiveMessage");
-
}
-
-
@Bean
-
Receiver receiver() {
-
return
new Receiver();
-
}
-
-
@Bean
-
StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
-
return
new StringRedisTemplate(connectionFactory);
-
}
-
-
public static void main(String[] args) throws InterruptedException {
-
-
ApplicationContext ctx = SpringApplication.run(MessagingRedisApplication.class, args);
-
-
StringRedisTemplate template = ctx.getBean(StringRedisTemplate.class);
-
Receiver receiver = ctx.getBean(Receiver.class);
-
-
while (receiver.getCount() ==
0) {
-
-
LOGGER.info(
"Sending message...");
-
template.convertAndSend(
"chat",
"Hello from Redis!");
-
Thread.sleep(
500L);
-
}
-
-
System.exit(
0);
-
}
-
}
可以看到我们已经收到了发出的消息。
转载:https://blog.csdn.net/ldy889/article/details/104962196
查看评论