范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

SpringBoot使用Redis进行消息的发布订阅原创

  /**
  * Redis 相关的配置,包含推送,以及对象编码的定义
  */
  @Configuration
  public class RedisConfig {
  public @Bean
  RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
  RedisTemplate template = new RedisTemplate<>();
  template.setConnectionFactory(connectionFactory);
  template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
  template.setKeySerializer(new StringRedisSerializer());
  template.setHashKeySerializer(new GenericJackson2JsonRedisSerializer());
  template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
  return template;
  }
  @Bean
  ChannelTopic topic() {
  return new ChannelTopic("messageQueue");
  }
  @Bean
  RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
  MessageListenerAdapter listenerAdapter) {
  RedisMessageListenerContainer container = new RedisMessageListenerContainer();
  container.setConnectionFactory(connectionFactory);
  container.addMessageListener(listenerAdapter, new PatternTopic("messageQueue"));
  return container;
  }
  @Bean
  MessageListenerAdapter listenerAdapter(Receiver receiver) {
  return new MessageListenerAdapter(receiver, "receiveMessage");
  }
  }
  public enum BusinessTypeEnum {
  //修改SystemConfig缓存
  UPDATE_SYSTEM_CONFIG;
  }
  //发布者接口
  public interface MessagePublisher {
  void publish(String message);
  }
  @Component
  public class RedisMessagePublisher implements MessagePublisher{
  private final static Logger logger = LoggerFactory.getLogger(RedisMessagePublisher.class);
  @Autowired
  private RedisTemplate redisTemplate;
  @Autowired
  private ChannelTopic topic;
  @Override
  public void publish(String message) {
  logger.info("推送信息:"+message);
  redisTemplate.convertAndSend(topic.getTopic(), message);
  }
  }
  //订阅接口
  public interface Receiver { void receiveMessage(String message); }
  @Component
  public class MessageReceiver implements Receiver {
  private final static Logger logger = LoggerFactory.getLogger(MessageReceiver.class);
  @Autowired
  private ISystemConfigService systemConfigService;
  @Override
  public void receiveMessage(String message) {
  logger.info("消息接收:"+message);
  JSONObject object = JSONObject.parseObject(message);
  String businessType = object.getString("businessType");
  logger.info("处理业务类型:businessType="+businessType);
  if(BusinessTypeEnum.UPDATE_SYSTEM_CONFIG.toString().equals(businessType)){//处理SystemConfig缓存
  String jsonStr = object.getString("jsonStr");
  if(jsonStr!=null&&!"".equals(jsonStr)){
  JSONObject json = JSONObject.parseObject(object.getString("jsonStr"));
  for(String key:json.keySet()){
  String value = json.getString(key);
  SystemConfig systemConfig = SystemConfigContainer.instance().getSystemConfig(key);
  if(systemConfig!=null){
  systemConfig.setKeyValue(value);
  SystemConfigContainer.instance().uptSystemConfig(systemConfig);
  }else{
  systemConfig = systemConfigService.selectByPrimaryJianMing(key);
  systemConfig.setKeyValue(value);
  SystemConfigContainer.instance().uptSystemConfig(systemConfig);
  }
  }
  }
  }
  }
  }

明星代言,实力不凡乐心手环ZIVAplus乐心智能手环我非常熟悉,算起来乐心ZIVAplus是我使用过的第三款乐心的产品,之前使用过乐心ZIVA乐心mambo2,对乐心智能手环的品质非常放心,在外观设计和功能方面的表现也让测试开发入门篇环境管理编码规范项目结构目录一前提准备二虚拟环境1。virtualenv的安装和应用2。pipenv的安装和使用3。导出虚拟环境为requirements。txt文件4。pipenv的相关使用命令5。需要Appium元素定位和UiAutomator表达式目录一常见属性的用法1。怎么用resourceid?2。其它属性二通过截图就可以看到元素的属性,那怎么元素定位呢?1。appiumapp页面元素定位2。UiAutomator的表达我用Python爬了好多美女,你确定不来看看?前期准备安装wget,用于下载美女pipinstallwget安装requestshtml,用于爬取页面元素pipinstallrequestshtml代码设计1请求headersVulture一键找出项目中所有无效的Python代码Vulture可以在Python程序中查找未使用的代码。这对于清理和查找大型项目(代码库)中的错误非常有用。不过由于Python的动态特性,像Vulture这样的静态代码分析器很可APPIUM测试微信小程序目录一测试微信小程序1。准备工作2。操作步骤3。注意4。强制设置安卓的进程5。指定BrowserName等于空二代码演示一测试微信小程序微信小程序和微信公众号的测试方法都是一样的。App自动化元素定位操作分层设计代码执行Pytest命令目录一App元素定位方式二元素操作三测试混合应用四以代码的方式执行Pytest命令五App自动化分层设计App自动化目前用的是Appium,有Python版本的Uiautomato测试开发之函数进阶纯函数目录一纯函数的概念1。纯函数2。非纯函数3。纯函数相同的输入保证相同的输出4。纯函数和非纯函数对比二纯函数的3个原则三函数的副作用四Python中的内置函数重点需要记住纯函数的概念测试经理的3个月试用期转正报告进入公司的三个月时间里,在领导和同事们的悉心关怀和指导协助下,使我在较短的时间内适应了公司的工作环境,也熟悉了公司的支付业务流程,目前能应对测试部门的工作任务一性能测试方面1。生产移动app安全测试客户端篇(一)反编译1前言APP客户端作为直接和用户接触的媒介,是公司是非常重要的信息资产。但由于系统本身的一些风险和破解工具的泛滥,使得破解移动应用变得易如反掌。移动应用安全性成为了大家都在关注的焦一文揭秘如何使用卡顿检测工具BlockCanary前言在日常业务测试中经常会发现页面跳转卡顿滑动卡顿等卡顿问题,但是我们发现卡顿问题,有时候反馈给开发不一定得到很好的解决,因为开发需要看日志,而每次如果都去抓log,就会显得麻烦,
手机耗电快发热量大,流量消耗快,原来是这2个地方没设置好本文编辑今日头条作者维权骑士签约用户小俊技术分享独家原创制作未经授权严禁转载,发现抄袭者将进行全网维权投诉分享生活小妙招,享受科技新生活!大家好,欢迎来到今天的知识分享!我是你们的迎来底价!魅族17我还能再战三年2020年5月8日,魅族16的生命周期结束,魅族迎来了新一代旗舰产品魅族17。不过相对于魅族16的惊艳,魅族17只能算得上一次妥协版的常规升级。我带大家回顾一下它的几个标签。1,三Meta的终点不是元宇宙而是抖音?4月27日美股盘后,美国科技巨头Meta(NASDAQFB)(原Facebook)公布了2022年一季度的财报,各财务指标均超过了市场预期,看起来甚是强劲,但主要是因为市场预期太低腾讯高级副总裁谈元宇宙现在讨论细节还太早,2030年才有望迎来质变21世纪经济报道记者白杨北京报道腾讯总办成员高级副总裁马晓轶近日在复旦大学管理学院校友会上围绕元宇宙话题做了一次分享。作为腾讯游戏业务的掌舵者,马晓轶对于元宇宙的思考和判断,某种意为泄愤报复恶意删除源代码,重新编写花费168。6万判2年被告人范某,男,1981年出生,汉族,大学本科范某于2014年7月7日入职嘉联支付有限公司(以下简称公司),原担任公司技术中心配置管理组负责人,主要负责公司代码管理服务器(以下简称36氪首发自助取袋机落地近1000家医院,袋拉拉获500万元A1轮融资36氪获悉,专注医疗场景的自助取袋机品牌袋拉拉近日获得500万元A1轮融资,由上海铮言投资。目前公司已启动A2轮融资,主要用于医院市场开拓和设备铺设商业化产品及私域运营变现工具研发如何优雅替换第三方依赖中的类?在项目中需要依赖其他第三方的jar包,但有时我们需要扩展第三方jar的功能,或者修复依赖中已知还未修复的bug,但碰到过很多种情况,第三方类库中并没有提供对应的扩展点导致无法优雅的刘强东的全面退出与明州女大学生案重启调查当年这起事件直接导致京东股票大跌,当日市值蒸发72亿美元,创下2017年新低!直接影响了京东的扩张的步伐。年仅48岁的刘强东是京东的灵魂人物,明州事件给刘强东和京东带来非常大的震动马斯克扬言收购可口可乐,今晚7点华为发布折叠屏旗舰机日报君发自凹非寺量子位公众号QbitAI今天星期四,明天星期五再坚持一天,然后星期天唱完了吗?来和日报君一起看看今日份科技圈新鲜事吧!今日大新闻马斯克称将要收购可口可乐公司马斯克似1539元二手游戏主机搭配推荐之前几篇文章简单介绍了下电脑各位配件的概念和性能,现在开始根据不同价位来推荐一下组装机搭配,主要还是根据大众的使用重点来推荐,每个价位会多推两套,配件分新旧。游戏以及办公,有的则可大学贫困生,手机太卡了,想买苹果13,应不应该买?有别的性价比高的手机推荐吗?我看你还是不太贫建议买Redmi,手机只是工具,有就行,钱应该都花在你大脑上,这样才能脱离贫困我看你还是不穷啊,我工作好多年了不过一个二手手机黑线黑线我一个月工资就够买一部13,但