亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

Spring boot+redis實現消息發布與訂閱的代碼

2020-10-28 21:27:56
字體:
來源:轉載
供稿:網友

一.創建spring boot項目

<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-data-redis</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <dependency>   <groupId>com.alibaba</groupId>   <artifactId>fastjson</artifactId>   <version>1.2.41</version>  </dependency>

二.編輯yml配置文件

server: port: 7888# 日志配置logging: config: classpath:log/logback.xml level: cn.com.dhcc: info org.springframework: info org.springframework.web: info com.alibaba.nacos.client.naming: errorspring: redis:  host: localhost  port: 6379  password: *********  database: 1  jedis:  pool:  max-idle: 8  max-active: 8  max-wait: -1  min-idle: 0  timeout: 5000

三.配置Redis

@Configurationpublic class RedisConfiguration { /**  * 實例化 RedisTemplate 對象  *  * @return  */ @Bean("RedisTemplateS") public RedisTemplate<String, Object> functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) {  RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();  initDomainRedisTemplate(redisTemplate, redisConnectionFactory);  return redisTemplate; } /**  * 設置數據存入 redis 的序列化方式,并開啟事務  *   * @param redisTemplate  * @param factory  */ private void initDomainRedisTemplate(@Qualifier("RedisTemplateS") RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) {  // 如果不配置Serializer,那么存儲的時候缺省使用String,如果用User類型存儲,那么會提示錯誤User can't cast to  // String!  redisTemplate.setKeySerializer(new StringRedisSerializer());  redisTemplate.setHashKeySerializer(new StringRedisSerializer());  FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<Object>(Object.class);  redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);  redisTemplate.setValueSerializer(fastJsonRedisSerializer);  //redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());  //redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());  // 開啟事務  redisTemplate.setEnableTransactionSupport(true);  redisTemplate.setConnectionFactory(factory); } /**  * 注入封裝RedisTemplate @Title: redisUtil @return RedisUtil @date  *   */ @Bean(name = "redisUtils") public RedisUtils redisUtil(@Qualifier("RedisTemplateS") RedisTemplate<String, Object> redisTemplate) {  RedisUtils redisUtil = new RedisUtils();  redisUtil.setRedisTemplate(redisTemplate);  return redisUtil; }

四.編寫RedisUtil消息發布方法

public class RedisUtils { private static final Logger log = LoggerFactory.getLogger(RedisUtils.class); private RedisTemplate<String, Object> redisTemplate; public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {  this.redisTemplate = redisTemplate; } public void publish(String channal ,Object obj) {  redisTemplate.convertAndSend(channal,obj ); }}

五.配置消息監聽

@Configurationpublic class RedisMessageListener { /**  * 創建連接工廠  * @param connectionFactory  * @param listenerAdapter  * @return  */ @Bean public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,             MessageListenerAdapter listenerAdapter,MessageListenerAdapter listenerAdapter2){  RedisMessageListenerContainer container = new RedisMessageListenerContainer();  container.setConnectionFactory(connectionFactory);  //接受消息的key  container.addMessageListener(listenerAdapter,new PatternTopic("phone"));  return container; } /**  * 綁定消息監聽者和接收監聽的方法  * @param receiver  * @return  */ @Bean public MessageListenerAdapter listenerAdapter(ReceiverRedisMessage receiver){  return new MessageListenerAdapter(receiver,"receiveMessage"); } /**  * 注冊訂閱者  * @param latch  * @return  */ @Bean ReceiverRedisMessage receiver(CountDownLatch latch) {  return new ReceiverRedisMessage(latch); } /**  * 計數器,用來控制線程  * @return  */ @Bean public CountDownLatch latch(){  return new CountDownLatch(1);//指定了計數的次數 1 }}

六.消息訂閱方法

public class ReceiverRedisMessage { private static final Logger log = LoggerFactory.getLogger(ReceiverRedisMessage.class); private CountDownLatch latch; @Autowired public ReceiverRedisMessage(CountDownLatch latch) {  this.latch = latch; } /**  * 隊列消息接收方法  *  * @param jsonMsg  */ public void receiveMessage(String jsonMsg) {  log.info("[開始消費REDIS消息隊列phone數據...]");  try {   log.info("監聽者收到消息:{}", jsonMsg);   JSONObject exJson = JSONObject.parseObject(jsonMsg);   User user = JSON.toJavaObject(exJson, User.class);   System.out.println("轉化為對象 :"+user);   log.info("[消費REDIS消息隊列phone數據成功.]");  } catch (Exception e) {   log.error("[消費REDIS消息隊列phone數據失敗,失敗信息:{}]", e.getMessage());  }  latch.countDown(); }}

七.定時消息發布測試

@EnableScheduling@Componentpublic class PublisherController { private static final Logger log = LoggerFactory.getLogger(PublisherController.class); @Autowired private RedisUtils redisUtils; @Scheduled(fixedRate = 5000) public String pubMsg() {  User user=new User(1, "尚***", 26,"男","陜西省xxxx市xxxxxx縣");  redisUtils.publish("phone", user);  log.info("Publisher sendes Topic... ");  return "success"; }}

八.測試結果

九.發布對象User實體

public class User implements Serializable { /**  *   */ private static final long serialVersionUID = 1L; private int id; private String name; private int age; private String sex; private String address;  .....................}

到此這篇關于Spring boot+redis實現消息發布與訂閱的文章就介紹到這了,更多相關Spring boot redis消息發布與訂閱內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕在线看视频国产欧美| 久久久久久中文| 日本精品久久久久影院| 午夜精品久久久久久久男人的天堂| 精品在线小视频| 91成人免费观看网站| 日韩av影院在线观看| 国产精品福利在线观看| 久久久国产精品免费| 欧美性xxxx在线播放| 国产成人精品免高潮在线观看| 亚洲影院污污.| 亚洲综合视频1区| 久久91精品国产91久久跳| 亚洲色图第三页| 中文字幕精品—区二区| 国产亚洲精品高潮| 亚洲v日韩v综合v精品v| 久久久久一本一区二区青青蜜月| 8x拔播拔播x8国产精品| 日韩中文字幕视频在线观看| 中文字幕日韩欧美| 国产精品高精视频免费| 日韩精品福利在线| 精品国产拍在线观看| 在线观看日韩欧美| 久久91超碰青草是什么| 国产成人一区二区三区小说| 国产精品免费久久久| 亚洲精品视频网上网址在线观看| 69av在线视频| 欧美激情成人在线视频| 亚洲精品电影网| 亚洲高清av在线| 欧美高清一级大片| 亚洲精品中文字幕有码专区| 久久精品中文字幕电影| 欧美理论电影网| 亚洲国产精品99| 九九热精品视频在线播放| 性欧美视频videos6一9| 亚洲一区二区三区视频播放| 国产精品一区二区3区| 日韩亚洲综合在线| 欧美亚洲国产成人精品| 国产成人精品一区二区三区| 亚洲图片在区色| 欧美激情久久久| 亚洲免费中文字幕| 亚洲成色777777女色窝| 欧美一级成年大片在线观看| 视频直播国产精品| 色樱桃影院亚洲精品影院| wwwwwwww亚洲| 亚洲精品国精品久久99热| 日韩中文字幕免费视频| 欧美日韩精品在线| 国产精品影片在线观看| 两个人的视频www国产精品| 国产精品日韩精品| 日韩欧美亚洲一二三区| 亚洲精品中文字幕有码专区| 亚洲淫片在线视频| 欧美日韩国产一区二区三区| 啊v视频在线一区二区三区| 国产激情999| 国产69精品久久久久9999| 国产美女久久精品香蕉69| 色偷偷91综合久久噜噜| 欧美激情视频一区| 亚洲美女喷白浆| 97视频在线观看网址| 57pao国产成人免费| 亚洲免费一级电影| 久久久久久中文| 国产亚洲一区精品| 中文字幕v亚洲ⅴv天堂| 日韩在线不卡视频| 欧美亚洲国产成人精品| 午夜精品蜜臀一区二区三区免费| 国产伦精品免费视频| 亚洲国产高潮在线观看| 欧美一二三视频| 91在线观看免费高清完整版在线观看| 色悠悠国产精品| 91久久精品久久国产性色也91| 成人黄色在线免费| 亚洲成人av中文字幕| 国产精品高精视频免费| 亚洲女人初尝黑人巨大| 国产欧美日韩中文字幕| 中文字幕精品www乱入免费视频| 91精品国产综合久久香蕉最新版| 日本成人在线视频网址| 欧美日韩国产一中文字不卡| 亚洲精品资源在线| 热re91久久精品国99热蜜臀| 欧美精品www在线观看| 亚洲成人aaa| 国产精品久久久久77777| 91免费国产网站| 欧美高清视频在线| 色综合老司机第九色激情| 久久男人的天堂| 欧美中文字幕视频| 国产精品国产三级国产aⅴ浪潮| 亚洲精品日韩欧美| 成人免费网站在线观看| 国产精品91久久久| 国产精品永久在线| 国产丝袜高跟一区| 久久久国产精品x99av| 95av在线视频| 欧美极度另类性三渗透| 日韩精品福利网站| 亚洲高清久久网| 欧美多人乱p欧美4p久久| 日本一区二区在线播放| 欧美韩日一区二区| 7777精品久久久久久| 亚洲在线免费观看| 2019中文字幕在线观看| 伊人亚洲福利一区二区三区| 91精品在线影院| 成人网中文字幕| 国产亚洲欧洲高清| 78m国产成人精品视频| 国产精品扒开腿做爽爽爽的视频| 欧美大片欧美激情性色a∨久久| 午夜精品蜜臀一区二区三区免费| 国产欧美日韩精品在线观看| 国产福利视频一区| 日本精品视频在线| 亚洲最大av网| 精品亚洲国产成av人片传媒| 亚洲有声小说3d| 日韩一区二区三区国产| 中文字幕在线观看日韩| 亚洲精品成人久久久| 日韩美女视频在线观看| 日韩国产欧美精品在线| 色综合导航网站| 久久人人爽人人爽爽久久| 欧洲亚洲免费视频| 亚洲国产高清自拍| 在线日韩第一页| 国产精品久久久久一区二区| 日韩美女视频中文字幕| 国产精品第10页| 98精品国产自产在线观看| 国产suv精品一区二区三区88区| 欧美激情一级二级| 亚洲综合中文字幕68页| 亚洲人精品午夜在线观看| 欧美性猛交99久久久久99按摩| 日韩毛片中文字幕| 亚洲一区二区三区777| 中文字幕最新精品| 国产91ⅴ在线精品免费观看| 国产欧美精品一区二区| 欧美大尺度在线观看| 久久九九热免费视频| 欧美日韩一区二区免费视频| 欧美日韩国产999|