日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

idea springboot 发布webservice 发布服务_太赞了:Spring boot+redis实现消息发布与订阅...

發(fā)布時間:2025/3/20 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 idea springboot 发布webservice 发布服务_太赞了:Spring boot+redis实现消息发布与订阅... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.創(chuàng)建spring boot項(xiàng)目

org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-starter-web com.alibaba fastjson 1.2.41

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

四.編寫RedisUtil消息發(fā)布方法

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

五.配置消息監(jiān)聽

@Configurationpublic class RedisMessageListener { /** * 創(chuàng)建連接工廠 * @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; } /** * 綁定消息監(jiān)聽者和接收監(jiān)聽的方法 * @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); } /** * 計(jì)數(shù)器,用來控制線程 * @return */ @Bean public CountDownLatch latch(){ return new CountDownLatch(1);//指定了計(jì)數(shù)的次數(shù) 1 }}

六.消息訂閱方法

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

七.定時消息發(fā)布測試

@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"; }}

八.測試結(jié)果

九.發(fā)布對象User實(shí)體

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; .....................}

感謝閱讀 關(guān)注小編 獲得很多好文。

總結(jié)

以上是生活随笔為你收集整理的idea springboot 发布webservice 发布服务_太赞了:Spring boot+redis实现消息发布与订阅...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美激情日韩 | 草逼视频网 | 国产l精品国产亚洲区久久 午夜青青草 | 成人乱人乱一区二区三区 | 亚洲最大福利 | 中文字幕97 | 国产伊人一区 | 中文字幕人妻色偷偷久久 | 久久久久久久久久久综合 | www午夜视频 | 操操av| 加勒比不卡视频 | 国产探花一区二区三区 | av电影在线观看 | 成年人深夜福利 | 色婷婷婷 | 中文字幕网伦射乱中文 | 日本少妇色| 人人爽人人爽人人爽人人爽 | wwwsss在线观看 | 人人插插| 国产a网站 | 欧美顶级黄色大片免费 | 国产精品久久久久久久久晋中 | 久久久www| 精品久久久国产 | 久久精品www | 日韩精品一区二区三区四区 | 荒岛淫众女h文小说 | 中文字幕欧美另类精品亚洲 | 特黄大片又粗又大又暴 | 国产三级做爰高清在线 | 亚洲av无码专区在线电影 | 刘亦菲毛片 | 老女人综合网 | 狼人色综合 | 久久人人视频 | 国产激情久久久久久熟女老人av | 亚洲成人免费网站 | 一区二区欧美日韩 | 欧美亚洲第一页 | 亚洲精品久久久中文字幕 | 成av人片在线观看www | 久久国产人妻一区二区免色戒电影 | 中文字幕精品在线观看 | 婷婷.com| 欧美日日 | 亚色视频在线观看 | 国产福利在线播放 | 国产精品人人做人人爽 | 日本aⅴ片| 国产伦精品一区二区三区四区视频 | 农村少妇| 亚洲论理 | 老熟妇一区二区三区啪啪 | 国产午夜在线一区二区三区 | 免费看黄色小视频 | 国产一区99| 福利视频h | 国产在线第二页 | 成人黄色片网站 | 一区二区在线视频播放 | 国产成人精品一区二区无码呦 | 欧美怡红院一区二区三区 | 色香色香欲天天天影视综合网 | 99久久久国产精品免费蜜臀 | 少妇在线观看 | 精品九一 | 亚洲 欧美 日韩 国产综合 在线 | 国产妇女馒头高清泬20p多 | 成人午夜精品福利免费 | 一区二区三区免费毛片 | 日韩久久中文字幕 | 一级黄色片在线观看 | 少妇性l交大片免潘金莲 | 五月婷中文字幕 | 开心激情av| 国产欧美一区二区三区精华液好吗 | 九九热在线精品 | 国产看片网站 | 国产免费a视频 | www.色播.com | 无码少妇一区二区三区 | 6080午夜伦理| 黑人黄色录像 | 亚洲男女视频在线观看 | 亚洲制服丝袜在线播放 | 国产激情一区二区三区在线观看 | 女人张开腿让男人桶爽 | 99久久99九九99九九九 | 狠狠躁| 国产又粗又猛 | 老司机精品视频在线播放 | 午夜视频久久 | 99亚洲欲妇 | 成人在线手机视频 | 亚洲视频在线观看网站 | 在线观看波多野结衣 | 欧美日韩人妻精品一区在线 |