好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Spring boot+redis實現消息發布與訂閱的代碼

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

熱門標簽:一個地圖標注多少錢 地圖標注工廠入駐 b2b外呼系統 廊坊外呼系統在哪買 四川穩定外呼系統軟件 南京手機外呼系統廠家 臺灣電銷 400電話辦理的口碑 高碑店市地圖標注app

一.創建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: error
spring:
 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

@Configuration
public class RedisConfiguration {

 /**
  * 實例化 RedisTemplate 對象
  *
  * @return
  */
 @Bean("RedisTemplateS")
 public RedisTemplateString, Object> functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
  RedisTemplateString, Object> redisTemplate = new RedisTemplate>();
  initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
  return redisTemplate;
 }

 /**
  * 設置數據存入 redis 的序列化方式,并開啟事務
  * 
  * @param redisTemplate
  * @param factory
  */
 private void initDomainRedisTemplate(@Qualifier("RedisTemplateS") RedisTemplateString, Object> redisTemplate, RedisConnectionFactory factory) {
  // 如果不配置Serializer,那么存儲的時候缺省使用String,如果用User類型存儲,那么會提示錯誤User can't cast to
  // String!
  redisTemplate.setKeySerializer(new StringRedisSerializer());
  redisTemplate.setHashKeySerializer(new StringRedisSerializer());

  FastJsonRedisSerializerObject> fastJsonRedisSerializer = new FastJsonRedisSerializerObject>(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") RedisTemplateString, 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 RedisTemplateString, Object> redisTemplate;

 public void setRedisTemplate(RedisTemplateString, Object> redisTemplate) {
  this.redisTemplate = redisTemplate;
 }

 public void publish(String channal ,Object obj) {
  redisTemplate.convertAndSend(channal,obj );
 }
}

五.配置消息監聽

@Configuration
public 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
@Component
public 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消息發布與訂閱內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Spring Cloud Stream分區分組原理圖解
  • Spring Cloud Stream如何實現服務之間的通訊
  • Spring Cloud Stream異常處理過程解析
  • 詳解Spring Cloud Stream使用延遲消息實現定時任務(RabbitMQ)
  • SpringBoot+WebSocket+Netty實現消息推送的示例代碼
  • SpringBoot集成WebSocket實現前后端消息互傳的方法
  • SpringBoot微信消息接口配置詳解
  • Spring boot項目redisTemplate實現輕量級消息隊列的方法
  • Spring Cloud Stream微服務消息框架原理及實例解析

標簽:南寧 畢節 拉薩 定州 甘南 泰州 伊春 河源

巨人網絡通訊聲明:本文標題《Spring boot+redis實現消息發布與訂閱的代碼》,本文關鍵詞  Spring,boot+redis,實現,消息,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Spring boot+redis實現消息發布與訂閱的代碼》相關的同類信息!
  • 本頁收集關于Spring boot+redis實現消息發布與訂閱的代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 精品国产乱码久久久久久郑州公司 | 一女三男做爰3p过程| 男男开荤粗肉被猛男狂翘臀视频| 国精品无码一区二区三区在线蜜桃 | 欧美国产在线一区| 蜜臀aⅴ一区二区三区蜜芽| 嗯啊娇妻| 国产做a爰片久久毛片| 99re国产精品视频首页| 销魂美女一级A片免费看| 边亲边把手放进衣服| 在线亚洲一区| 99国产精品久久久久99打野战 | 国产毛片精品一区二区色欲黄A片| 在线观看国产高清免费不卡黄| 欧美va亚洲va国产综合| 美女被艹哭| 我要看免费的韩国少妇1级毛片| 健身私教摸湿h文| 女人下面毛多又黑又厚| 国产欧美日产aV毛片视频 | 美女被艹的网站| 夫妻性生活动态图| 中国矿业大学招生办电话| 老师在办公室用丝袜让我爽| 69精品国自产在线| 精产国品一二三产区入口电影| 贱奴把拖鞋叼过来跪下用嘴穿| avtt在线| 高h双性小说| k8s经典-K82-Net入口| 国产一情一色| 高h交换小说| 波多野结衣丰满女邻居做爰BD| 免费网站在线观看人数在哪买苹果| 美女又?又黄?视频| 小sao货水好多| 免费k频道系统网络共享| 狠狠躁夜夜躁人人爽爱东京热av| 巜交换做爰2H无删减金鱼妻| 国产精品久久久亚洲第一牛牛|