一、需求描述

1. 利用Redis做消息队列,实现一个异步化服务框架;如图:

8_1_异步设计和站内邮件通知系统

2. 利用搭建好的框架实现异步化发送点赞信息和登录异常信息 。

 

二、具体diamante实现

首先搭建应用Redis做消息队列的异步化框架

8_1_异步设计和站内邮件通知系统

 

1.准备

JedisAdapter.java

类中加上lpush 和 bpop的代码用来实现消息队列;加上setObject 和 getObject实现序列化与反序列的过程(将事件存入消息队列的时候要序列化,从队列中取出事件的时候需要反序列化):

 public long lpush(String key, String value){
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            return jedis.lpush(key, value);
        }catch (Exception e){
                logger.error("Jedis lpush 发生异常 " + e.getMessage());
                return 0;
        }finally {
            if(jedis != null){
                try {
                    jedis.close();
                }catch (Exception e){
                    logger.error("Jedis 关闭异常 " + e.getMessage());
                }
            }
        }

    }

    public List<String> brpop(int timeout, String key){

        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            return jedis.brpop(timeout, key);
        }catch (Exception e){
            logger.error("Jedis brpop发生异常 " + e.getMessage());
            return null;
        }finally {
            if (jedis != null){
                try {
                    jedis.close();
                }catch (Exception e){
                    logger.error("Jedis 关闭异常" + e.getMessage());
                }
            }
        }
    }

    //序列化
    public void setObject(String key, Object object){
        set(key, JSON.toJSONString(object));
    }

    //反序列化
    public <T> T getObject(String key, Class<T> clazz){

        String value = get(key);
        if(value != null){
            return JSON.parseObject(value, clazz);
        }
        return null;

    }
View Code

相关文章:

  • 2021-05-16
  • 2021-05-16
  • 2021-10-15
  • 2021-07-21
  • 2021-05-26
  • 2021-10-16
  • 2021-08-02
  • 2022-12-23
猜你喜欢
  • 2021-11-08
  • 2021-04-26
  • 2022-12-23
  • 2022-01-07
  • 2021-05-03
  • 2021-08-17
相关资源
相似解决方案