加入Redis的集成依赖,springboot会帮我们自动注入StringRedisTemplate操作模板
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
发布消息,通过StringRedisTemplate将消息发布到mytopic主题上
"redis") (public class RedisPublish { private int m = 0; private StringRedisTemplate template; ("publish") public String publish(){ int index = m; for(int i=m;i<index+10;i++){ template.convertAndSend("mytopic", "这是我发第"+i+"条的消息啊"); } return "结束"; } }
订阅消息
需要配置一个消息监听者容器,容器需要连接工厂以及消息监听器,在消息监听器中需要配置消息处理对象以及处理的方法
public class MyRedisConf { public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter){ RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(listenerAdapter,new PatternTopic("mytopic")); return container; } /** * 绑定消息监听者和接收监听的方法,必须要注入这个监听器,不然会报错 */ public MessageListenerAdapter listenerAdapter(){ return new MessageListenerAdapter(new Receiver(),"receiveMessage"); } } public class Receiver { public void receiveMessage(String message) { log.info("Received <" + message + ">"); } }
启动程序,通过http://localhost:8081/redis/publish发布消息
控制台显示如下
2018-05-17 11:18:55,258 - Received <这是我发第3条的消息啊> 2018-05-17 11:18:55,259 - Received <这是我发第5条的消息啊> 2018-05-17 11:18:55,260 - Received <这是我发第0条的消息啊> 2018-05-17 11:18:55,258 - Received <这是我发第1条的消息啊> 2018-05-17 11:18:55,261 - Received <这是我发第7条的消息啊> 2018-05-17 11:18:55,259 - Received <这是我发第2条的消息啊> 2018-05-17 11:18:55,260 - Received <这是我发第4条的消息啊> 2018-05-17 11:18:55,260 - Received <这是我发第6条的消息啊> 2018-05-17 11:18:55,262 - Received <这是我发第8条的消息啊> 2018-05-17 11:18:55,269 - Received <这是我发第9条的消息啊>
有一点我很不理解,为什么消费的顺序是随机的,希望有路过的大神可以帮我解答一下啊