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

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

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

瀏覽:216日期: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久久,三上悠亚国产精品一区二区三区
激情五月色综合国产精品| 激情久久一区二区| 亚洲精选成人| 国产精品亚洲一区二区在线观看| 老司机免费视频一区二区三区| 岛国av在线网站| 91av亚洲| 午夜在线视频观看日韩17c| 亚洲精品婷婷| 国产一区国产二区国产三区| 激情久久五月| 日韩一区二区三区高清在线观看| 欧美黄色精品| 欧美日韩激情| 欧美亚洲一级| 日韩天堂在线| 日韩在线电影| 中文在线资源| 亚洲精一区二区三区| 久久香蕉精品香蕉| 国产亚洲精品久久久久婷婷瑜伽| 日本va欧美va瓶| 日本久久精品| 中文字幕免费精品| 国产66精品| 综合亚洲自拍| 99精品在线免费在线观看| 亚洲日本国产| 久久男女视频| 日本免费在线视频不卡一不卡二| 91一区二区| 日韩三级精品| 美女网站视频一区| 欧美一区影院| 国产农村妇女精品一区二区| 精品免费视频| 丝袜美腿亚洲一区| 久久久久免费| 亚州国产精品| 久久婷婷久久| 国产精品久久久一区二区| 日韩视频免费| 首页国产精品| 日韩三级精品| 午夜免费一区| 亚洲天堂av影院| 国产区精品区| 日韩在线播放一区二区| 日韩欧美中文| 国产精品1区| 一二三区精品| 在线日韩av| 国产一区二区三区天码| 日本久久一区| 国产亚洲午夜| 999久久久免费精品国产| 久久免费福利| 久久国产婷婷国产香蕉| 国产亚洲午夜| 成人精品亚洲| 精品一区二区三区免费看| 日韩欧美久久| av不卡在线| 少妇精品导航| 日韩.com| 久久精品一区二区三区中文字幕| 亚洲人成亚洲精品| 激情综合网址| 日韩精品不卡一区二区| 久久精品国产免费| 久久不见久久见国语| 国产精品一级| 视频一区在线视频| 精品丝袜在线| 国产aⅴ精品一区二区四区| 日本aⅴ精品一区二区三区| 视频在线观看一区二区三区| 激情欧美一区| 欧美影院三区| 99久久亚洲精品| 日韩在线高清| 欧美激情综合| 国产欧美综合一区二区三区| 奇米777国产一区国产二区| 美女精品在线观看| 一区三区视频| 激情五月色综合国产精品| 久久视频国产| 亚洲天堂成人| 亚洲精品电影| 国产精品日韩久久久| 在线日韩成人| 日韩视频免费| 欧美va天堂在线| 日韩伦理一区| 久久精品国产网站| 色综合视频一区二区三区日韩 | 日韩高清成人| 老司机精品在线| 国产精品一国产精品| 天海翼精品一区二区三区| 国产亚洲毛片| 亚洲精品电影| 国产一区日韩一区| 日韩不卡免费高清视频| 日本欧美国产| 日韩欧美午夜| 日韩欧美二区| 免费日韩一区二区三区| 日本91福利区| 欧美天堂一区| 欧美亚洲专区| 国产麻豆一区二区三区| 日韩国产欧美三级| 五月亚洲婷婷 | 亚洲一区欧美二区| 蜜桃视频欧美| 亚洲午夜一级| 在线日韩电影| 久久国产中文字幕| 视频福利一区| 亚洲高清成人| 午夜精品一区二区三区国产| 午夜电影亚洲| 午夜电影亚洲| 视频在线观看一区| 日韩精选在线| 国产日韩欧美在线播放不卡| 欧美一区免费| 免费一级欧美片在线观看网站| 国产精品综合| 国产精品成人自拍| 国产精品v日韩精品v欧美精品网站| 国产精品成人3p一区二区三区| 国产精品黄色| 91一区二区三区四区| 98精品视频| 欧美综合另类| 麻豆9191精品国产| 日韩av一级片| 久久99视频| 中文字幕在线视频网站| 伊人久久大香线蕉av不卡| 免费中文字幕日韩欧美| 日本中文字幕不卡| 国产精品嫩模av在线| 久久精品亚洲| 久久天堂成人| 丝袜美腿亚洲色图| 911精品国产| 国产日韩电影| 国产一在线精品一区在线观看| 免费视频久久| 国产精品xvideos88| 丝袜美腿一区| 久久亚洲风情| 国产精品亚洲欧美日韩一区在线| 日韩1区在线| 国产亚洲精品v| 国产精品尤物| 日韩啪啪电影网| 亚洲涩涩av| 美女久久精品| 亚洲天堂黄色| 久久黄色影视| 色88888久久久久久影院| 亚洲激情av| 日韩1区2区日韩1区2区| 色乱码一区二区三区网站| 午夜一级在线看亚洲| 国产精品大片免费观看| 亚洲夜间福利| 久久国产视频网| 成人久久久久| 日本视频在线一区| 福利欧美精品在线| 宅男噜噜噜66国产日韩在线观看| 蜜桃视频在线观看一区二区| 国产精品亚洲一区二区在线观看| 久久国产中文字幕| 日本va欧美va精品| 欧美日韩尤物久久| 蜜臀va亚洲va欧美va天堂 | 国产91欧美| 免播放器亚洲一区| 樱桃视频成人在线观看| 视频一区视频二区中文字幕| 美女久久99| 久久xxxx| 91亚洲国产| 日韩国产在线一| 亚洲一级二级| 麻豆精品视频在线| 在线亚洲国产精品网站| 成午夜精品一区二区三区软件| 中文字幕日本一区| 免费在线日韩av| 欧美一级全黄| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲电影在线|