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

网站 可以做无形资产吗和生活app下载安装最新版

网站 可以做无形资产吗,和生活app下载安装最新版,专业网站建设推广,做推广效果哪个网站好目录 一、引言 二、消息幂等解决方案 2.1. 方案一 2.2. 方案二 一、引言 幂等是一个数学概念,用函数表达式来描述是这样的:f(x) f(f(x)) 。在程序开发中,则是指同一个业务,执行一次或多次对业务状态的影响是一致的。有些业务…

目录

一、引言

二、消息幂等解决方案

2.1. 方案一

2.2. 方案二


一、引言

幂等是一个数学概念,用函数表达式来描述是这样的:f(x) = f(f(x)) 。在程序开发中,则是指同一个业务,执行一次或多次对业务状态的影响是一致的。有些业务天生就是幂等的,如查询和删除业务执行一次和多次的结果是一样的,而像用户下单、用户退款是非幂等业务。

实际项目开发中,我们在提交表单时,很多时候可能会重复提交表单,这个时候我们通过token令牌等唯一标识来解决,第一次提交页面将缓存中的唯一标识删除,后面再重新提交时缓存中的标识已经被删了因此重复提交失败。

我们在消息消费的过程中也会存在同样的问题,即如何来保障所有业务在接收RabbitMQ消息时保证业务的幂等性,避免消息重复消费呢?

二、消息幂等解决方案

2.1. 方案一

1. 给每个消息都设置/生成一个唯一id,利用id区分是否是重复消息,与消息一起投递给消费者。

2. 消费者接收到消息后处理自己的业务,业务处理成功后将消息ID保存到数据库

3. 如果下次又收到相同消息,去数据库查询判断是否存在,存在则为重复消息放弃处理

 核心代码:

我们可以在生产者和消费者两端分别声明消息转换器的Bean,本案例为了方便直接在启动类中声明消息转换器,并配置自动为消息创建id。

package com.example.consumer;import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}@Beanpublic MessageConverter messageConverter(){// 1.定义消息转换器Jackson2JsonMessageConverter jjmc = new Jackson2JsonMessageConverter();// 配置自动创建消息id,用于识别不同消息,也可以在业务中基于ID判断是否是重复消息jjmc.setCreateMessageIds(true);return jjmc;}
}
package com.example.publisher;import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class PublisherApplication {public static void main(String[] args) {SpringApplication.run(PublisherApplication.class, args);}@Beanpublic MessageConverter messageConverter(){// 1.定义消息转换器Jackson2JsonMessageConverter jjmc = new Jackson2JsonMessageConverter();// 配置自动创建消息id,用于识别不同消息,也可以在业务中基于ID判断是否是重复消息jjmc.setCreateMessageIds(true);return jjmc;}
}

通过源码可以看到默认生成的是UUID:

 通过RabbitMQ浏览器界面可以看到消息已经生成了一个唯一ID :

2.2. 方案二

结合业务逻辑,基于业务本身做判断。以余额支付业务为例,我们要在支付后修改订单状态为已支付,应该在修改订单状态前先查询订单状态,判断状态是否是未支付。只有未支付订单才需要修改,其他状态不做处理:

核心代码 

 上述代码可以通过乐观锁来实现,替换代码如下:

 

http://www.yidumall.com/news/101598.html

相关文章:

  • 做恋视频网站seo搜索引擎优化是什么意思
  • 男人和女人床上做性视频网站优化网站快速排名软件
  • 群晖配置wordpress 80端口资源优化网站排名
  • 深圳网站设计必选成都柚米科技09做如何自己创建一个网站
  • 黔东南网页设计万秀服务不错的seo推广
  • 合肥网站关键词seo优化公司昆明seo案例
  • app设计网站推荐培训机构怎么找
  • 网站的用户运营值得做吗seo到底是做什么的
  • 建站市场重庆seo黄智
  • 苏州网站建设哪家好爱站查询工具
  • 阳江市建设局网站进入百度app
  • 外语网站制作外链查询
  • icp网站域名怎么填写整站seo怎么做
  • 微网站怎么做滚动seo教程论坛
  • 餐饮分销系统开发兴安盟新百度县seo快速排名
  • 购买手表网站关键词百度网盘
  • 重庆网站营销网络营销招聘岗位有哪些
  • 濮阳开公司怎么找客户深圳关键词排名优化系统
  • 阳江做网站的公司国外免费网站域名服务器
  • 泉州哪里做网站开发如何优化搜索引擎
  • 游戏运营备案官方网站seo排名需要多少钱
  • wordpress notebook 主题北京seo推广系统
  • .net招聘网站怎么做自己建网站怎么建
  • 销售产品做单页还是网站企业网站建设推广
  • 房地产销售好做吗seo优化检测
  • 推广网站是什么意思申请友情链接
  • 17.zwd一起做网站汕头企业网络推广
  • 企业每月报账在哪个网站做发布软文广告
  • 深圳网站建设费用多少钱百度搜索优化关键词排名
  • wordpress文件下载漏洞惠州百度seo