本文使用的是redis的java包Redisson如果不清楚怎么配的请查看
/**
* 测试redis主题发布消息
*/
@GetMapping("/topic/put")
public void putTopic(){
try{
RTopic topic1 = redisson.getTopic("topic", new SerializationCodec());
topic1.publish("测试主题消息发布1");
topic1.publish("测试主题消息发布1");
}
catch (Exception ex){
System.out.println(ex.getMessage());
}
finally {
redisson.shutdown();
}
};
这里偷懒使用了spring bean的 形式让接收topic消息的程序运行
/**
* 主题订阅的方式
* @param redisson
* @return
*/
@Bean
public String redissonTopic(RedissonClient redisson){
try{
RTopic topic = redisson.getTopic("topic",new SerializationCodec());
topic.addListener(new MessageListener<String>() {
@Override
public void onMessage(String s, String str) {
System.out.println("onMessage:"+s+"; Thread: "+Thread.currentThread().toString());
}
});
}
catch (Exception ex){
System.out.println(ex.getMessage());
}finally {
}
return "";
}
注意
topic形式发消息如果响发送class类需要序列化!