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

常德经开区网站官网wordpress适用于图片站的主题

常德经开区网站官网,wordpress适用于图片站的主题,郑州北环网站建设培训,一个完整的网站设计事务消息介绍 在一些对数据一致性有强需求的场景,可以用 Apache RocketMQ 事务消息来解决,从而保证上下游数据的一致性。 以电商交易场景为例,用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购物车状态清空等多个子系统的…

事务消息介绍

在一些对数据一致性有强需求的场景,可以用 Apache RocketMQ 事务消息来解决,从而保证上下游数据的一致性。

以电商交易场景为例,用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购物车状态清空等多个子系统的变更。当前业务的处理分支包括:

  • 主分支订单系统状态更新:由未支付变更为支付成功。
  • 物流系统状态新增:新增待发货物流记录,创建订单物流记录。
  • 积分系统状态变更:变更用户积分,更新用户积分表。
  • 购物车系统状态变更:清空购物车,更新用户购物车记录。

当主分支订单系统状态更新失败后,物流、积分、购物车系统都不应该接收到消息

事务消息的发送流程

使用普通消息是做不到的,因为他会直接将消息发送到topic中

而事务消息参考了两阶段提交的原理,

  1. 先把消息发送broker中
  2. 当消息发送成功后,会执行本地事务
  3. 通过本地事务的执行情况,返回一个状态
  4. 状态对应三种情况
    • LocalTransactionState.UNKNOW:需要broker调用发送端的回查机制
    • LocalTransactionState.COMMIT_MESSAGE:broker将消息发送到指定的topic,此时消费端可以接收到消息
    • LocalTransactionState.ROLLBACK_MESSAGE:broker丢弃消息,不发送到指定的topic,消费端接收不到消息

整个事务消息的详细交互流程如下图所示:
在这里插入图片描述

@Test
public void sendTrans() throws MQBrokerException, RemotingException, InterruptedException, MQClientException {// 创建事务消息发送客户端TransactionMQProducer transProducer = new TransactionMQProducer("test-trans-producer");transProducer.setNamesrvAddr(RocketMQConfig.NAME_SERVER_ADDR);// 指定回查事务消息时的线程池ExecutorService executorService = new ThreadPoolExecutor(2, 5, 100, TimeUnit.SECONDS, new ArrayBlockingQueue<>(2000), new ThreadFactory() {@Overridepublic Thread newThread(Runnable r) {Thread thread = new Thread(r);thread.setName("client-transaction-msg-check-thread");return thread;}});transProducer.setExecutorService(executorService);// 设置事务监听器transProducer.setTransactionListener(new TransactionListener() {// 执行本地事务@Overridepublic LocalTransactionState executeLocalTransaction(Message message, Object o) {System.out.println(Thread.currentThread().getName() + ":执行本地事务");// 触发回查机制return LocalTransactionState.UNKNOW;}// 回查本地事务,如果执行本地事务返回UNKNOW状态或者生产者应用退出导致本地事务未提交任何状态@Overridepublic LocalTransactionState checkLocalTransaction(MessageExt messageExt) {System.out.println(Thread.currentThread().getName() + ":触发事务回查");// 提交事务return LocalTransactionState.COMMIT_MESSAGE;}});transProducer.start();Message message = new Message(RocketMQConfig.TEST_TOPIC, "hello world".getBytes());// 发送事务消息SendResult send = transProducer.sendMessageInTransaction(message,null);System.out.println(send.getSendStatus());Thread.sleep(Integer.MAX_VALUE);
}

注:需要注意的是事务消息的生产组名称 ProducerGroupName不能随意设置。事务消息有回查机制,回查时Broker端如果发现原始生产者已经崩溃,则会联系同一生产者组的其他生产者实例回查本地事务执行情况以Commit或Rollback半事务消息。

http://www.yayakq.cn/news/648163/

相关文章:

  • 建行的官方网站吗h5做的网站如何连接数据库
  • 个人做流量大的网站网页设计html代码大全怎么改颜色
  • php网站建设外国参考文献阿里巴巴网站导航栏怎么做
  • 做游戏网站要备案吗html5网站建设报价
  • 长沙企业如何建网站合肥市建设工程市场价格信息网站
  • 南京做网站南京乐识赞公司简介ppt模板素材
  • 居家养老网站建设wordpress导入 ftp
  • 婚恋网站开发背景文献中国华能集团电子商务平台
  • 网站界面设计的基本原则是什么商家网站建设
  • 河北省和城乡建设厅网站首页wordpress主题怎么设置
  • 飞沐视觉北京网站建设公司苏州网站建设空间
  • 开发什么网站线上营销活动主要有哪些
  • 岳阳建设网站重庆建设工程质量监督信息网
  • o2o网站建设市场wordpress 输出 文章时间
  • php素材网站源码免费下载网站的域名分为哪些
  • 阿里云虚拟主机wordpress建站教程那些免费网站可以做国外贸易
  • 网站开发设计制作合同百度电商推广
  • 网站一年续费多少钱学生班级优化大师
  • iis 制作搜索网站深圳建站网络公司
  • 中国品牌网站建设电脑做网站怎么解析域名
  • 象刀设计网站响应式网站好不好
  • 商城网站类建设哪家好小说网站建设详细流程
  • 深圳专业返利网站开发做3d办公家具教程的网站
  • 卖保健品可以自己做网站卖吗高校心理健康网站建设与实现
  • 网站建设一站式网站挣钱怎么做
  • 做电影网站免责声明有用吗网站建设及 维护合同
  • 保定模板建站软件六师五家渠市建设局网站
  • h5手机模板网站有名的网站制
  • 网站的推广方案wordpress 函数 文件
  • 免费做的英文网站做社交网站的预算