日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:219日期:2023-09-08 09:18:21

一.創建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'; }}

八.測試結果

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

九.發布對象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消息發布與訂閱內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲在线观看| 国产精品免费99久久久| 精品国产亚洲日本| 国产精品久久久久久久免费软件| 亚洲精品一二| 日韩av二区在线播放| 婷婷综合一区| 911精品国产| 欧美xxxx性| 久久男人av| 国产一区二区三区亚洲| 超级白嫩亚洲国产第一| 久久久久国产| 色天使综合视频| 欧美二区视频| 视频精品一区二区| 婷婷视频一区二区三区| 国产丝袜一区| 精品丝袜久久| 国产 日韩 欧美一区| 激情久久久久久久| 亚洲精品一区二区妖精| 亚洲影视一区| 欧美成人精品一级| 亚洲成人av观看| 三级欧美在线一区| 日本aⅴ精品一区二区三区| 国产精品欧美在线观看| 国产精品成人国产| 在线天堂中文资源最新版| 亚洲激情中文在线| 日韩精品视频在线看| 美女视频免费精品| 午夜精品成人av| 久久先锋影音| 国产伦一区二区三区| 亚洲天堂av影院| 欧美综合国产| 国产精品色在线网站| 日韩高清中文字幕一区二区| 亚洲一区黄色| 国产精品美女在线观看直播| 国产高清不卡| 最新国产拍偷乱拍精品| 久久国产视频网| 999精品在线| 日韩欧美中文字幕一区二区三区| 大香伊人久久精品一区二区| 久久亚洲电影| 国产在线不卡一区二区三区| 亚洲精华国产欧美| 麻豆精品在线| 99亚洲精品| 国产高清日韩| 中文在线不卡| 电影91久久久| 亚洲综合小说| 色爱av综合网| 日日摸夜夜添夜夜添国产精品| 激情中国色综合| 亚洲精品激情| 色婷婷精品视频| 国产精品手机在线播放| 精品久久电影| 韩日一区二区| 婷婷丁香综合| 青青草国产精品亚洲专区无| 黄色网一区二区| 欧美日韩水蜜桃| 91精品久久久久久久久久不卡| 亚洲精品伊人| 亚洲一区观看| 欧美日韩精品一区二区视频| 黄色成人在线网址| 美女av在线免费看| 成人午夜精品| 免费视频久久| 午夜av不卡| 国产日韩欧美三区| 久久aⅴ国产紧身牛仔裤| 日韩欧美另类一区二区| 国产精品一区二区精品| 欧美日韩国产精品一区二区亚洲| 精品三级国产| 国产亚洲字幕| 免费日韩精品中文字幕视频在线| 天堂√中文最新版在线| 欧美影院视频| 91精品一区国产高清在线gif| 久久精品国产精品亚洲毛片| 日韩三级视频| 亚洲香蕉久久| 美女91精品| 国产美女一区| 午夜久久美女| 欧美日韩国产传媒| 亚洲天堂1区| 97精品国产一区二区三区| 国产探花一区二区| 亚洲bt欧美bt精品777| 亚洲一区二区成人| 五月综合激情| 天堂资源在线亚洲| 97精品一区二区| 国产一区二区三区日韩精品| 国产福利一区二区三区在线播放| 日韩av电影一区| 91精品国产自产精品男人的天堂| 亚洲影院天堂中文av色| 蜜臀精品久久久久久蜜臀| 国产精品社区| 亚洲欧美高清| 久久不射网站| 视频一区在线视频| 美女精品在线观看| 蜜臀久久久久久久| 亚洲久久一区| 亚洲不卡视频| 日韩精品三区四区| 日本国产一区| 日韩黄色在线观看| 久久精品 人人爱| 国产精品玖玖玖在线资源| 国产三级精品三级在线观看国产| 日韩av网站在线观看| 国产精品自在| 乱一区二区av| 成人在线超碰| 亚洲深夜视频| 免费毛片在线不卡| 亚洲深夜av| 亚洲精品观看| 国产日韩视频| 精品视频91| 日产精品一区| 婷婷中文字幕一区| 在线观看一区| 国产精品最新| 日韩欧美二区| 伊人精品视频| 日韩一区二区三区免费视频| 欧美日韩一区二区三区不卡视频 | 91精品啪在线观看国产18 | 日本在线视频一区二区| 69堂精品视频在线播放| 久久久91麻豆精品国产一区| 日韩av有码| 亚洲综合另类| 国产精品入口久久| 在线观看精品| 最新国产拍偷乱拍精品| 中文字幕日韩高清在线| 91精品啪在线观看国产爱臀| 精品国产乱码久久久久久1区2匹| 成人日韩精品| 香蕉久久国产| 欧美精品99| 桃色一区二区| 综合在线一区| 国产一区二区三区视频在线| 蜜臀av免费一区二区三区| 亚洲图片久久| 欧美极品一区二区三区| 欧产日产国产精品视频| 久久一二三区| 麻豆高清免费国产一区| 日韩另类视频| 亚洲色图国产| 国产精品成人一区二区不卡| 中文精品在线| 国产精品久久久久久久免费软件| 香蕉视频亚洲一级| 色综合视频一区二区三区日韩 | 欧美精品中文字幕亚洲专区| 麻豆视频在线观看免费网站黄| 久久国产电影| 日本精品一区二区三区在线观看视频| 另类小说一区二区三区| 91高清一区| 国产精品巨作av| 99热精品在线| 国产麻豆一区二区三区精品视频| 国产成人精品一区二区三区视频| 欧美日韩三区| 免费在线观看一区| 中文日韩在线| 国产在线观看91一区二区三区| 99国产精品| 国产在线视频欧美一区| 丝袜脚交一区二区| 欧美精品导航| 亚洲二区三区不卡| 国产精品v日韩精品v欧美精品网站| 亚洲成人国产| 国产精品视频一区二区三区 | 日韩影院二区| 国产亚洲久久| 日韩中文字幕91| 日本不良网站在线观看| 日韩精品91亚洲二区在线观看|