Redis订阅功能可以用于消息的传输,是一种消息通信模式,Redis客户端可以订阅任意数量的频道,具体实现代码:package com.hcmony.sWord.redis;import org.apache.commo
Redis订阅功能可以用于消息的传输,是一种消息通信模式,Redis客户端可以订阅任意数量的频道,具体实现代码:
package com.hcmony.sWord.redis;import org.apache.commons.lang3.StringUtils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPubSub;
public class RedisMQ {
private static final String TOPIC="TOPIC";
private final JedisPool jedisPool;
public RedisMQ(JedisPool jedisPool) {
this.jedisPool = jedisPool;
}
public void publish(String topic ,String messge){
Jedis jedis = null;
if (StringUtils.isBlank(topic)){
topic=TOPIC;
}
try {
jedis = jedisPool.getResource();
jedis.publish(topic,messge);
}
finally {
if (null != jedis) {
jedis.close();
}
}
}
public void subscribe(String topic,JedisPubSub jedisPubSub){
Jedis jedis = null;
if (StringUtils.isBlank(topic)){
topic=TOPIC;
}
try {
jedis = jedisPool.getResource();
jedis.subscribe(jedisPubSub,topic);
}
finally {
if (null != jedis) {
jedis.close();
}
}
}
public static void main(String[] args) {
//默认连接本地redis,
// loclhost:6379
JedisPool jedisPool = new JedisPool();
RedisMQ publish = new RedisMQ(jedisPool);
new Thread(new Runnable() {
@Override
public void run() {
publish.subscribe("PID",new MyjedisPubSub());
}
}).start();
for (int i=0;i<100;i++){
publish.publish("PID","messge"+i);
}
}
public static class MyjedisPubSub extends JedisPubSub {
@Override
public void onMessage(String channel, String message) {
System.out.println("-------channel is "+channel+" message is "+message);
}
}
}
--结束END--
本文标题: redis的订阅功能有什么用
本文链接: https://www.lsjlt.com/news/113846.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-10
2024-05-10
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
2024-05-09
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0