RedisThread.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package com.yihu.wlyy.redis;
  2. import com.yihu.wlyy.service.app.prescription.PrescriptionService;
  3. import com.yihu.wlyy.util.SystemConf;
  4. import org.apache.commons.lang3.StringUtils;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.beans.factory.annotation.Value;
  9. import org.springframework.data.redis.core.StringRedisTemplate;
  10. import org.springframework.stereotype.Component;
  11. import redis.clients.jedis.Jedis;
  12. /**
  13. * Created by Trick on 2017/8/7.
  14. */
  15. @Component
  16. public class RedisThread implements Runnable {
  17. private static Logger logger = LoggerFactory.getLogger(RedisThread.class);
  18. @Value("${channel.redis.host}")
  19. private String url;
  20. @Value("${channel.redis.port}")
  21. private Integer port;
  22. @Value("${channel.redis.password}")
  23. private String password;
  24. @Autowired
  25. private StringRedisTemplate redisTemplate;
  26. @Autowired
  27. private PrescriptionService prescriptionService;
  28. @Override
  29. public void run() {
  30. String key = SystemConf.getInstance().getSystemProperties().getProperty("redis_prescription_title");
  31. Jedis jedis = new Jedis(url,port);
  32. if(StringUtils.isNotBlank(password)){
  33. jedis.auth(password);
  34. }
  35. while (true){
  36. try {
  37. String message = jedis.rpop(key);
  38. if(StringUtils.isEmpty(message)){
  39. Thread.sleep(1000L);//如果没有读取到记录,等待1秒
  40. }else {
  41. prescriptionService.redisMessage(message);
  42. }
  43. }catch (Exception e){
  44. e.printStackTrace();
  45. logger.info(e.getMessage());
  46. }
  47. }
  48. }
  49. }