【小西】通过商品渠道新增咪咕埋点功能,ThreadUtil.execAsync()线程异步

前言

通过商品渠道新增咪咕埋点功能:当用户通过小西访问了咪咕相关的商品时,需要把这访问记录下来,发送给咪咕方。

实现

打算在咪咕商品api里写实现逻辑。因为小西是访问的第三方接口,可能会出现一些不可控因素,如:有可能抛出异常,也可能响应时间过长。因此采用线程异步方式,防止断开连接。关于线程异步,可参考:在Java中通过线程池实现异步执行

GoodsSpuMiGuController

@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("/goodsspu/migu")
@Api(value = "migu", tags = "咪咕快游spu商品接口API")
public class GoodsSpuMiGuController {private final GoodsSpuMiGuService goodsSpuMiGuService;private final AccessStatisticsComponentService accessStatisticsComponentService;/*** @Description: 通过商品渠道查询咪咕快游商品*/@ApiOperation(value = "通过商品渠道查询咪咕快游商品,4表示咪咕会员,5表示咪咕时长包")@GetMapping("/getGoodsSpuMiGuByChannel/{channel}")public R getGoodsSpuMiGuByChannel(@PathVariable("channel") String channel) {//发送访问记录给咪咕方ThreadUtil.execAsync(() -> accessStatisticsComponentService.sendAccessStatistics());return goodsSpuMiGuService.getGoodsSpuMiGuByChannel(channel);}}

AccessStatisticsComponentService

@Slf4j
@Service
@RestController
@AllArgsConstructor
public class AccessStatisticsComponentService {private final MiGuConfig miguConfig;/*** @Description: 发送访问记录给咪咕方*/public void sendAccessStatistics() {try {String userPhone = ThirdSessionHolder.getThirdSession().getPhone();log.info("userPhone值! userPhone={}",userPhone);LocalDateTime operationTime = LocalDateTime.now();JSONObject queryReq = new JSONObject();queryReq.set("userPhone", userPhone);queryReq.set("operationTime", operationTime);String url = miguConfig.getCollectMallBuryPointsUrl();log.info("sendAccessStatistics url={}",url);String respStr = HttpUtil.createPost(url).setConnectionTimeout(10000).setReadTimeout(10000).header(Header.CONTENT_TYPE, ContentType.JSON.getValue()).body(queryReq.toString()).execute().body();if(StrUtil.isNotBlank(respStr)){log.info("发送访问记录给咪咕方成功!");}} catch (Exception e) {log.error("发送访问记录给咪咕方失败! ex={}", e.getMessage(), e);}}}

问题

代码调试时,出现了SocketTimeoutException:connect timed out问题,如下图所示:

在这里插入图片描述
解决办法,可参考:【异常】原来提示SocketTimeoutException:connect timed out还可能是外部因素导致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43480.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小西】同步咪咕订单给咪咕方(写接口给第三方)

同步咪咕订单给咪咕方 前言思路实现1、定义请求体和响应信息MiGuOrderSyncReqMiGuOrderSyncResp 2、nacos定义好咪咕相关配置信息3、同步咪咕参数配置4、MiGuOrderSyncControl5、MiGuOrderSyncService6、MiGuOrderSyncServiceImplCreateAscIISignUtil 生成参数 字典排序 签名Hm…

【小西】优化若依导出功能,若依继承导出

前言 现需求是在原有的导出功能基础上,新增两列。 实现 因为新增两列不是数据库表中字段。因此,需要需要建立一个VO类。 原本想用若依继承导出,如下所示: Data public class ThemeActivityUserVO extends ThemeActivityUser…

极光尔沃A6-3d打印机体验

第一次使用3d打印机来打印模件,打印的是机械臂夹爪部位的小零件,设计的效果图如下图1所示。 图1:设计的夹爪部位原图 1、模件的设计 本模件使用的是solidworks软件进行的设计,当然可以使用其他的软件设计。最终保存的时候要以.st…

微信小游戏开发新手教程1-人人都能做游戏

如果你正在阅读这篇文章,那么你就是我所说的“人人”了。在此我默认你符合如下的几个条件: 有一定的阅读理解能力对做游戏有一定的兴趣(否则你为什么要看这篇文章呢)有一台电脑(做游戏至少需要一台电脑) …

一起用Go做一个小游戏(下)

打包资源 使用file2byteslice包我们可以将图片和config.json文件打包进二进制程序中,之后编译生成一个二进制程序。然后拷贝这一个文件即可,不用再拷贝图片和其他配置文件了。 golang有很多第三方包可以将打包资源,原理其实很简单——读取资源…

chatgpt赋能python:Python简单小游戏制作教程——让你学会编写游戏代码

Python简单小游戏制作教程——让你学会编写游戏代码 Python是一种高级编程语言,越来越受欢迎,因为它易于学习和使用,而且灵活性非常高。在这篇文章中,我们将教你如何用Python编写一个简单的小游戏。让我们开始吧! 需…

ChatGPT-4终究会取代人类嘛?

随着人工智能技术的迅速发展,自然语言处理(NLP)已经成为了一个热门领域。其中,ChatGPT-4是一个备受瞩目的自然语言处理工具。在2022年高考语文中,ChatGPT-4表现出色,说明它在自然语言处理领域有很强的实力。…

宋宝华: 僵尸进程的成因以及僵尸可以被“杀死”吗?

僵尸不可能被杀死,因为它已经死了,不存在再死一次的问题。死的对立面是活,死者已死。只有活的进程才可能被杀死。 什么是僵尸 首先要明确一点,僵尸进程的含义是:子进程已经死了,但是父进程还没有wait它的一…

僵尸进程zombie与孤儿进程orphan

代码已上传至https://github.com/gatieme/AderXCoding/tree/master/system/unix/zombie 问题提出 以前在学习《unix环境高级编程》进程时候,提到孤儿进程和僵尸进程,但是一直对这两个概念比较模糊。于是今天做了一些测试程序,并把这些记录下来. 僵尸进程…

僵尸进程以及如何处理僵尸进程

僵尸进程:就是已经结束了的进程,但是没有从进程表中删除。太多了会导致进程表里面条目满了,进而导致系统崩溃,倒是不占用其他系统资源。最后有defunct的标记,就表明是僵尸进程。 今天配置Redis的时候结束停止Redis服务…

僵尸进程的一点玩法

僵尸进程的一点玩法 前言被忽略的RundownProtectionExAcquireRundownProtection 应用总结 前言 这几天在看WRK的时候,偶然间发现的一个东西,逆向之后,发现了个僵尸进程的玩法。目前菜鸡一枚,有说的不准确的地方,请大家…

PAT——1094 谷歌的招聘

2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续…

PTA—7-5 谷歌的招聘

实际上这题是不难的,甚至说有点简单,连我这样的小菜比都可以顺利的AC。 废话不多说来看题目。 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以…

AI对话AI才是正解?KAUST研究团队提出基于角色扮演的大模型交互代理框架CAMEL

电影《盗梦空间》中有这样一句非常经典的台词: “世上最具有可塑性的寄生虫是什么?是人类的想法。人类大脑中一个简单的想法,就可以建立一座庞大的城市。有时一个想法也可以改变世界,并改写一切规则,这就是我为什么要…

chatGpt的快捷使用

首页的界面,非常好看,有我经常使用的入口 第一步:打开edge浏览器 第二步:右上角的扩展程序 第三步:点击 扩展 第四步: 第五步: 第六步: 第七步: 新打开Tab页&#xf…

windows下通过远程桌面访问linux图形界面

一、安装epel库 epel库安装之前无法使用yum install xrdp命令安装xrdp 命令:yum install epel-release之后会自动匹配对应版本的rpm包,并解决依赖关系进行安装。 二、安装xrdp xrdp作为linux的图形化界面 1.命令:yum install xrdp2.开启…

如何在Mac上快速显示桌面以便快速访问

macOS 环境中充满了可用于执行有用任务的快捷方式和手势。其中之一被简单地命名为“显示桌面”。当您打开一大堆应用程序窗口时,这个方便的功能可以为您节省宝贵的时间。一起来看看如何在Mac上快速显示桌面的方法吧。 1.使用触控板手势 触控板手势可能很难描述&…

大牛证券解析恒指大跌800点+全球股市大跌

今日两市差异化或许是像上一年白马抱团强化相同,而本年白马被丢掉,接力的科技与锂电,而这两个板块特别是(成果爆发工作高成长为特性),锂电有宁德时代,比亚迪、容百科技等,芯片&#…

股票大跌期权对冲

股票期权的出世标示着股票能够及时止损, 股票期权能够很好的与股票做对冲,可以把股票亏损的风险降低,减少投资者面对股票行情下跌产生的亏损。 股票期权的上市让股票多了一种对冲方式,投资者买入股票的时候同时买入一手认沽期权&…

美股历史行情数据之日频率数据

美股历史行情日频率数据 全交易所eod数据,阿里云盘分享全历史行情数据,最早数据记录于1970年。数据字段包含OHLC,除权,股息等全部字段阿里云盘订阅数据,数据每天更新。 全交易所eod数据,阿里云盘分享 交易…