当前位置: 首页 > news >正文

汕头拿家做网站厚街做网站公司

汕头拿家做网站,厚街做网站公司,化妆品网站建设经济可行性分析,访问紧急升级中通知问升级文章目录 1、kafka确保消息不丢失#xff1f;1.1、生产者端确保消息不丢失1.2、kafka服务端确保消息不丢失1.3、消费者确保正确无误的消费 2、生产者发送消息 KafkaService3、UserInfoServiceImpl - login()4、service-account - AccountListener.java 1、kafka确保消… 文章目录 1、kafka确保消息不丢失1.1、生产者端确保消息不丢失1.2、kafka服务端确保消息不丢失1.3、消费者确保正确无误的消费 2、生产者发送消息 KafkaService3、UserInfoServiceImpl - login()4、service-account - AccountListener.java 1、kafka确保消息不丢失 1.1、生产者端确保消息不丢失 发送模式发后即忘、同步阻塞确认、异步非阻塞确认生产者acks模式props.put(“acks”, “all”)、acks: all-1配置重试props.put(“retries”, 3)、retries: 3 1.2、kafka服务端确保消息不丢失 kafka是文件型的消息中间件不会单纯的因为服务器宕机导致消息丢失消息的log日志文件损坏搭建kafka集群副本 1.3、消费者确保正确无误的消费 偏移量提交  自动提交enable-auto-commit: true  手动提交ack-mode: manual_immediate同步提交 异步提交推荐偏移量重置  auto-offset-reset: earliest - 如果有偏移量则继续消费如果偏移量没了从头重新进行消费可能会存在幂等性问题  auto-offset-reset: latest - 如果有偏移量则继续消费如果偏移量不存在只消费新消息旧消息没消费完就丢掉了  auto-offset-reset: none - 如果有偏移量则继续消费如果偏移量不存在抛出异常消费者重试重试主题和死信主题 RetryableTopic() 2、生产者发送消息 KafkaService package com.atguigu.tingshu.common.service;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.support.SendResult; import org.springframework.stereotype.Service;import java.util.concurrent.CompletableFuture;Service public class KafkaService {private static final Logger logger LoggerFactory.getLogger(KafkaService.class);Autowiredprivate KafkaTemplate kafkaTemplate;/*** 向指定主题发送消息* 此方法通过调用重载的sendMsg方法向指定主题发送消息使用默认的消息标签和消息键** param topic 发送消息的主题* param msg 需要发送的消息内容*/public void sendMsg(String topic, String msg){// 调用重载的sendMsg方法传入默认值以简化调用this.sendMsg(topic, null, null, msg);}/*** 发送消息到指定的Kafka主题** param topic 消息主题* param partition 分区编号* param key 消息键值* param msg 消息内容*/public void sendMsg(String topic, Integer partition, String key, String msg){// 发生消息并返回异步结果CompletableFutureSendResult future this.kafkaTemplate.send(topic, partition, key, msg);// 异步处理发送结果future.whenCompleteAsync((result, ex) - {if (ex ! null){// 如果发送过程中出现异常logger.error(生产者发送消息失败原因{}, ex.getMessage());}});}} whenCompleteAsync异步完成时的处理、当异步操作完成时 3、UserInfoServiceImpl - login() 此时 service-user 是生产者 发送消息 Slf4j Service SuppressWarnings({unchecked, rawtypes}) public class UserInfoServiceImpl extends ServiceImplUserInfoMapper, UserInfo implements UserInfoService {Autowiredprivate WxMaService wxMaService;Autowiredprivate RedisTemplate redisTemplate;Autowiredprivate UserAccountFeignClient userAccountFeignClient;Autowiredprivate KafkaService kafkaService;/*** 根据微信返回的code进行用户登录* param code 微信登录凭证* return 返回包含登录令牌的Map对象*///GlobalTransactional//TransactionalOverridepublic MapString, Object login(String code) {// 创建一个HashMap对象用于存放返回的数据HashMapString, Object map new HashMap();try {// 通过微信服务获取用户的会话信息WxMaJscode2SessionResult sessionInfo this.wxMaService.getUserService().getSessionInfo(code);// 获取用户的openidString openid sessionInfo.getOpenid();// 查询数据库中是否存在该openid对应的用户信息UserInfo userInfo this.getOne(new LambdaQueryWrapperUserInfo().eq(UserInfo::getWxOpenId, openid));if (userInfo null) {// 如果用户不存在则创建一个新的UserInfo对象userInfo new UserInfo();// 设置用户的openiduserInfo.setWxOpenId(openid);// 设置用户的昵称其中包含一个随机生成的IDuserInfo.setNickname(这家伙太懒 IdWorker.getIdStr());// 设置用户的头像URLuserInfo.setAvatarUrl(https://img0.baidu.com/it/u1633409170,3159960019fm253fmtautoapp138fJPEG?w500h500);// 保存用户信息到数据库this.save(userInfo);// 初始化用户账号信息//userAccountFeignClient.initAccount(userInfo.getId());this.kafkaService.sendMsg(KafkaConstant.QUEUE_USER_REGISTER,userInfo.getId().toString());//int i 1 / 0;}// 生成一个随机的登录令牌String token UUID.randomUUID().toString();// 创建一个UserInfoVo对象用于存放用户信息UserInfoVo userInfoVo new UserInfoVo();// 将UserInfo对象的属性复制到UserInfoVo对象中BeanUtils.copyProperties(userInfo, userInfoVo);// 将用户信息存储到Redis中设置过期时间为30分钟this.redisTemplate.opsForValue().set(RedisConstant.USER_LOGIN_KEY_PREFIX token, userInfoVo,RedisConstant.USER_LOGIN_KEY_TIMEOUT, TimeUnit.SECONDS);// 将生成的登录令牌放入Map对象中map.put(token, token);// 返回包含登录令牌的Map对象return map;} catch (WxErrorException e) {// 如果发生微信错误异常抛出自定义的异常throw new GuiguException(ResultCodeEnum.LOGIN_AUTH);}}} 4、service-account - AccountListener.java 此时 service-account 是消费者 接收消息 Slf4j Component public class AccountListener {Autowiredprivate UserAccountService userAccountService;RetryableTopic(backoff Backoff(2000))KafkaListener(topics KafkaConstant.QUEUE_USER_REGISTER)public void listen(String userId, Acknowledgment ack){// 如果是空消息直接确认掉后续不用再执行if (StringUtils.isBlank(userId)) {ack.acknowledge();return;}// 初始化账户this.userAccountService.saveAccount(Long.valueOf(userId));ack.acknowledge();// 手动确认} }
http://www.zqtcl.cn/news/763109/

相关文章:

  • 网站开发需要哪些人才辽宁奔之流建设工程有限公司网站
  • 做旅游产品的网站有哪些个人做搜索网站违法吗
  • 营销型网站的功能网站制作价钱多少
  • angularjs 网站模板工作感悟及心得
  • 福州 网站定制设计哈尔滨网站建设咨询
  • 酒吧网站模板创办网页
  • 外贸网站建设软件有哪些现在网站建设用什么语言
  • lnmp wordpress 主题不见高级seo课程
  • 成都哪家公司做网站最好杭州软件开发
  • 做网站多少宽带够wordpress编辑文章中图片
  • 无锡网站制作排名软件工程公司
  • 做网站国内好的服务器美食网站建设项目规划书
  • 三亚市住房和城乡建设厅网站江西电信网站备案
  • 联谊会总结网站建设对外宣传如何在家做电商
  • 360建站系统徐州建设银行网上银行个人网站
  • 网站域名在哪里备案石家庄站规模
  • 重庆南川网站制作公司电话工会网站群建设
  • 深圳高端建设网站忘了网站链接怎么做
  • 郑州做网站报价wordpress中文4.8
  • 网站维护费用一年多少跨境电商平台网站建设广州
  • 辽宁网站制作公司网店装修流程
  • html5可以做交互网站吗打开网站说建设中是什么问题?
  • 彩票网站开发制作需要什么wordpress 在线预览
  • 外贸平台app衡水seo排名
  • 怎样做网站表白墙东莞商城网站推广建设
  • 郑州郑州网站建设河南做网站公司哪家好爱站长尾词挖掘工具
  • dede网站地图文章变量网站qq 微信分享怎么做
  • 越南做网站网站建设以及运营方面
  • 广西建网站哪家好网站关闭与域名备案
  • 网站开发版本号婚庆网站建设策划案费用预算