ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RabbitMQ+elasticsearch+Redis,实现新增内容并异步到es中,是否消费成功检测

RabbitMQ+elasticsearch+Redis,实现新增内容并异步到es中,是否消费成功检测 RabbitMQ springcloudelasticsearch实现前端页面新增文章内容异步到elasticsearch中可提供进行高亮搜索新增文章时需要通过RabbitMQ步到elasticsearch为了防止有消息没有发送并接收成功将文章存到redis中待elasticsearch消费成功后将redis中的key进行删除如没有消费成功则重复发送mq消息。新增文章内容实现类-方法部分StringmessageJSON.toJSONString(上传的实体类);//RedisStringkeyreids-key名称;//设置zset类型将当前新增的时间设置为score用于检测key的创建时长是否超过指定时间redisTemplate.opsForZSet().add(key,message,System.currentTimeMillis());RabbitMQ监听类-方法部分//当elasticsearch中数据插入成功删除redis中对应的key-valueredisTemplate.opsForZSet().remove(key,message);定时任务-检查是否有未消费的内容AutowiredprivateAmqpTemplateamqpTemplate;//检查超过五分钟还存在在redis中的数据进行mq补发publicvoidcheckRabbitMessage(){Stringkeyreids-key名称;doublemaxTimeSystem.currentTimeMillis()-60*1000*5;SetStringmesredisService.rangeByScore(key,0,maxTime);if(mes!null!mes.isEmpty()){for(Stringvalue:mes){//未发送成功的消息进行补发amqpTemplate.convertAndSend(RabbitConfig.EXCHANGE_NAME,RabbitConfig.ROUNTING_KEY,value);}}}
返回列表