如何用框架的jedispool而不是redistempalte实现其他服务器的消息订阅

    首先我这边的应用场景是和别的商家做接口对接,他会用redis不断的推送一些消息过来,我这边进行接收并做相应的处理,其中用的就是redis的发布订阅模式。
    由于小编这边是ssm框架,本事的配置文件使用的是jedis,所以我这边的做法是:
    1.redis服务器的ip和端口配置在自己的redis配置文件中
    2.编写订阅消息的类,通过实现JedisPubSub类,然后实现里面的方法
    3.编写通过渠道进行redis的消息订阅,然后将其设置成项目启动就加载的状态
    4.(channel)渠道是双方共同约定好的,叫一样的即可,通过获取该渠道就可以获取下面的消息
    5.为了保证实现异步执行,用多线程来保证异步订阅消息
    6.具体代码

@Component
public class RedisCeshiController implements ApplicationListener {
@Autowired
private JedisPool jedisPool;

@Override
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
    if (contextRefreshedEvent.getApplicationContext().getParent() == null) {//保证只执行一次
        try {
            start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

public void start(){
    Thread thread = new Thread(new RedisRun()) ;
    thread.start();
}

class RedisRun implements Runnable{

    @Override
    public void run() {
        Jedis jedis = jedisPool.getResource();
        MessageSubscriber messageSubscriber = new MessageSubscriber();
        jedis.subscribe(messageSubscriber,CommonConstants.CHANNEL);
    }
}

package com.thinkgem.jeesite.app.controller;

import redis.clients.jedis.JedisPubSub;

public class MessageSubscriber extends JedisPubSub {
//订阅初始化
@Override
public void onMessage(String channel, String message) {

    System.out.println(channel+"="+message);
}
//取消订阅
@Override
public void onPMessage(String pattern, String channel, String message) {

}
//订阅初始化
@Override
public void onSubscribe(String channel, int subscribedChannels) {

}
//取消订阅
@Override
public void onUnsubscribe(String channel, int subscribedChannels) {

}
//取消模式方式的订阅
@Override
public void onPUnsubscribe(String pattern, int subscribedChannels) {

}
//处理消息订阅模式
@Override
public void onPSubscribe(String pattern, int subscribedChannels) {

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值