农博园网站建设投标书长春模板网站建设企业

web/2025/10/3 9:28:02/文章来源:
农博园网站建设投标书,长春模板网站建设企业,网站开发的开发工具,wordpress 布局调整从版本4开始#xff0c;MongoDB支持 事务。事务是建立在 会话之上的#xff0c;因此#xff0c;需要一个活跃的 ClientSession。 除非你在你的应用程序上下文中指定一个 MongoTransactionManager#xff0c;否则事务支持是 DISABLED#xff08;禁用的#xff09;。你可以…从版本4开始MongoDB支持 事务。事务是建立在 会话之上的因此需要一个活跃的 ClientSession。 除非你在你的应用程序上下文中指定一个 MongoTransactionManager否则事务支持是 DISABLED禁用的。你可以使用 setSessionSynchronization(ALWAYS) 来参与正在进行的非本地 MongoDB 事务。 为了获得对事务的完全程序化控制你可能想在 MongoOperations 上使用会话回调。 下面的例子显示了在一个 SessionCallback 中的程序化事务控制。 Example 124. 程序性事务 ClientSession session client.startSession(options); template.withSession(session).execute(action - {session.startTransaction(); try {Step step // ...;action.insert(step);process(step);action.update(Step.class).apply(Update.set(state, // ...session.commitTransaction(); } catch (RuntimeException e) {session.abortTransaction(); }}, ClientSession::close) 获得一个新的 ClientSession。 开始事务。 如果一切按预期进行就提交修改。 出现意外所以要回滚一切。 完成后不要忘记关闭会话。 前面的例子让你完全控制事务行为同时在回调中使用会话范围的 MongoOperations 实例以确保会话被传递给每个服务器调用。为了避免这种方法带来的一些开销你可以使用 TransactionTemplate 来消除手动事务流的一些噪音。 1. 事务和TransactionTemplate Spring Data MongoDB事务支持一个 TransactionTemplate。下面的例子展示了如何创建和使用 TransactionTemplate。 Example 125. 事务和 TransactionTemplate template.setSessionSynchronization(ALWAYS); // ...TransactionTemplate txTemplate new TransactionTemplate(anyTxManager); txTemplate.execute(new TransactionCallbackWithoutResult() {Overrideprotected void doInTransactionWithoutResult(TransactionStatus status) { Step step // ...;template.insert(step);process(step);template.update(Step.class).apply(Update.set(state, // ...}; });在 Template API 配置中启用事务同步。 使用提供的 PlatformTransactionManager 创建 TransactionTemplate。 在回调中ClientSession 和事务已经被注册。 在运行期间改变 MongoTemplate 的状态就像你可能认为在前面列表的第1项中可能发生的那样会导致线程和可见性问题。 2. 事务和MongoTransactionManager MongoTransactionManager 是通往众所周知的Spring事务支持的网关。它可以让应用程序使用 Spring的事务托管功能。MongoTransactionManager 将一个 ClientSession 绑定到线程上。MongoTemplate 会检测会话并相应地对这些与事务相关的资源进行操作。MongoTemplate 也可以参与到其他正在进行的事务中。下面的例子展示了如何用 MongoTransactionManager 创建和使用事务。 Example 126. 事务和 MongoTransactionManager Configuration static class Config extends AbstractMongoClientConfiguration {BeanMongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) { return new MongoTransactionManager(dbFactory);}// ... }Component public class StateService {Transactionalvoid someBusinessFunction(Step step) { template.insert(step);process(step);template.update(Step.class).apply(Update.set(state, // ...}; });在应用 application context 中注册 MongoTransactionManager。 将方法标记为事务性。 Transactional(readOnly true) 建议 MongoTransactionManager 也启动一个事务将 ClientSession 添加到发出的请求中。 3. 响应式事务 与支持响应式 ClientSession 一样ReactiveMongoTemplate 提供了专门的方法用于在事务中进行操作而不必担心根据操作结果提交或停止操作。 除非你在你的 application context 中指定一个 ReactiveMongoTransactionManager否则事务支持是 DISABLED禁用的。你可以使用 setSessionSynchronization(ALWAYS) 来参与正在进行的非本地MongoDB事务。 使用普通的MongoDB响应式驱动API在一个事务性流程中的 delete 可能看起来像这样。 Example 127. 原生驱动的支持 MonoDeleteResult result Mono.from(client.startSession()) .flatMap(session - {session.startTransaction(); return Mono.from(collection.deleteMany(session, ...)) .onErrorResume(e - Mono.from(session.abortTransaction()).then(Mono.error(e))) .flatMap(val - Mono.from(session.commitTransaction()).then(Mono.just(val))) .doFinally(signal - session.close()); });首先我们显然需要启动session。 一旦我们有了 ClientSession就开始事务。 通过向操作传递 ClientSession在事务中进行操作。 如果操作异常完成我们需要停止事务并保留错误。 当然也可以在成功的情况下提交更改。仍然保留操作结果。 最后我们需要确保关闭会话。 上述操作的罪魁祸首是在保留 main flow DeleteResult而不是通过 commitTransaction() 或 abortTransaction() 发布的事务结果这导致了相当复杂的设置。 4. 事务和TransactionalOperator Spring Data MongoDB事务支持一个 TransactionalOperator。下面的例子展示了如何创建和使用一个 TransactionalOperator。 Example 128. 事务和 TransactionalOperator template.setSessionSynchronization(ALWAYS); // ...TransactionalOperator rxtx TransactionalOperator.create(anyTxManager,new DefaultTransactionDefinition()); Step step // ...; template.insert(step);MonoVoid process(step).then(template.update(Step.class).apply(Update.set(state, …)).as(rxtx::transactional) .then();为事务性参与启用事务同步。 使用提供的 ReactiveTransactionManager 创建 TransactionalOperator。 TransactionalOperator.transactional(…​) 为所有上游操作提供事务管理。 5. 事务和ReactiveMongoTransactionManager ReactiveMongoTransactionManager 是通往众所周知的 Spring事务支持 的网关。它允许应用程序利用Spring的管理事务功能。ReactiveMongoTransactionManager 将 ClientSession 绑定到 subscriber Context。ReactiveMongoTemplate 会检测会话并对这些与事务相关的资源进行相应操作。 ReactiveMongoTemplate 也可以参与其他正在进行的事务。下面的例子展示了如何用 ReactiveMongoTransactionManager 创建和使用事务。 Example 129. 事务和 ReactiveMongoTransactionManager Configuration public class Config extends AbstractReactiveMongoConfiguration {BeanReactiveMongoTransactionManager transactionManager(ReactiveMongoDatabaseFactory factory) { return new ReactiveMongoTransactionManager(factory);}// ... }Service public class StateService {TransactionalMonoUpdateResult someBusinessFunction(Step step) { return template.insert(step).then(process(step)).then(template.update(Step.class).apply(Update.set(state, …));}; });在application context中注册 ReactiveMongoTransactionManager。 将方法标记为事务性的。 Transactional(readOnly true) 建议 ReactiveMongoTransactionManager 也启动一个事务将 ClientSession 添加到发出的请求中。 6. 事务内部的特殊行为 在事务内部MongoDB服务器有一个稍微不同的行为。 Connection Settings MongoDB驱动提供了一个专门的副本集名称配置选项使驱动进入自动检测模式。这个选项有助于识别主要的副本集节点和事务中的命令路由。 确保在MongoDB的URI中添加 replicaSet。请参考 连接字符串选项 以了解更多细节。 Collection Operations MongoDB不支持集合操作例如在事务中创建集合。这也会影响到第一次使用时发生的即时集合创建。因此请确保所有需要的结构都已到位。 Transient Errors MongoDB可以为在事务性操作中出现的错误添加特殊标签。这些标签可能表示暂时性的故障这些故障可能通过重试操作而消失。我们强烈推荐 Spring Retry 用于这些目的。然而我们可以覆写 MongoTransactionManager#doCommit(MongoTransactionObject)以实现MongoDB参考手册中所述的重试提交操作行为。 Count MongoDB的 count 操作是基于集合统计的可能无法反映事务中的实际情况。当在一个多文档事务中发出 count 命令时服务器会响应 error 50851。一旦 MongoTemplate 检测到一个活动的事务所有暴露的 count() 方法都会被转换并使用 $match 和 $count 操作符委托给聚合框架保留 Query 设置如 collation。 在 aggregation count helper 中使用 geo 命令时有一些限制。以下运算符不能使用必须用不同的运算符代替。 $where → $expr$near → $geoWithin with $center$nearSphere → $geoWithin with $centerSphere 使用 Criteria.near(…​) 和 Criteria.nearSphere(…​) 的查询必须改写为 Criteria.within(…​) 各自的 Criteria.withinSphere(…​)。同样适用于 repository 查询方法中的 near 查询关键字必须改为 within。也请参见MongoDB JIRA ticket DRIVERS-518 以进一步参考。 下面的片段显示了会话绑定闭包内的 count 用法。 session.startTransaction();template.withSession(session).execute(action - {action.count(query(where(state).is(active)), Step.class)... 上面的片段具体化为以下命令。 db.collection.aggregate([{ $match: { state: active } },{ $count: totalEntityCount }] ) 而不是。 db.collection.find( { state: active } ).count()

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

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

相关文章

如何网站防止采集携程网站建设的意义

客户端测试面临的挑战 难点: 业务复杂,产品多,技术栈多样 测试过程的痛点: 配置-》执行-〉检查-》结果 手工测试前置配置操作极其繁琐:安装测试包-〉进入debug页面-》设置h-〉设置AB test-》锁定rn包-〉进入业务页…

网站推广建设期有什么公司是建设网站的吗

MySQL查询数据 SELECT基本查询 SELECT语句的功能 SELECT 语句从数据库中返回信息。使用一个 SELECT 语句,可以做下面的事: 列选择:能够使用 SELECT 语句的列选择功能选择表中的列,这些列是想 要用查询返回的。当查询时&#xf…

海外手表网站济南网站建设工作室

在JavaScript中,可以使用console.time()和console.timeEnd()来控制执行时间的命令。 console.time()用于开始计时,可以指定一个标识符作为参数,用于标识计时器。 console.time(query); // 执行查询操作 console.timeEnd(query); 执行上述代…

站长之家官网入口wordpress 浏览量

目录 引言gRPC:Google的高性能RPC框架gRPC通信流程图 Dubbo:阿里巴巴的微服务治理框架Dubbo服务治理流程图 表格:gRPC与Dubbo的比较结论呼吁行动Excel表格:gRPC与Dubbo特性总结 摘要 在构建分布式系统时,选择合适的服务…

枣阳做网站张家港做企业网站

//带参无返回值 /*注意: 1、 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应 2、 调用方法时,实参不需要指定数据类型 3、 方法的参数可以是基本数据类型,如 int、double 等,也可以是引用数据类型&am…

找it工作有什么好的招聘网站搭建网站的架构

一、术语 中文英文说明地域Region阿里云建设的数据中心。资源创建成功后无法更换地域。可用区Zone同一地域内,电力和网络互相独立的物理数据中心。一个地域下可以有多个可用区。同一地域内可用区之间内网互通并且故障隔离,云服务器 ECS 网络延时低。实例…

注册域名 不建网站河南省工程项目信息公示栏

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 大家好,我是水滴~~ 本文主要介绍 VAE 模型,主要内容有:VAE 模型的概念、如果下载 VAE 模型、如何安装 VAE 模型、如…

中山制作企业网站海原县建设局网站

孤立森林(IsolationForest)异常检测 IsolationForest[6]算法它是一种集成算法(类似于随机森林)主要用于挖掘异常(Anomaly)数据,或者说离群点挖掘,总之是在一大堆数据中,找出与其它数据的规律不太符合的数据。该算法不采样任何基于聚类或距离的方法,因此他和那些基于距离的的…

网站服务费怎么做分录服装网站栏目调研

1、问题 vim里面如何再文本里面快速跳到下一个空格和上一个空格 2、操作 w是在文本里面快速跳到下一个空格 b是在文本里面快速跳到上一个空格

做个外贸网站一般需要多少钱网店代运营哪里好

引言 在安卓开发中,视图绑定是一个关键的步骤,它允许开发者将布局文件中的视图组件与Activity或Fragment中的成员变量关联起来。这一机制不仅使得UI操作更加便捷,而且提高了开发效率。本文主要探讨了安卓开发中的一项重要技术——View Bindin…

科技公司网站推荐做网站多少分辨率就可以

在SQL中,LEFT()函数是一个字符串函数,用于从一个字符串的左侧开始提取指定数量的字符。这个函数通常接受两个参数: 第一个参数是要从中提取字符的字符串。 第二个参数指定要提取的字符数。 语法如下: LEFT(string_expression,…

房地产网站设计方案app订制开发公司

目录 生成jar文件 方式一:打包成一个总的jar文件 方式二:打包的jar文件和第三方jar文件分开 生成jar文件 打开“文件->项目结构-构建” 点击“”选择“jar->from modules ....” 弹出“从模块创建 jar” 方式一:打包成一个总的jar…

网站哪里做可以做营销任务的网站

通过npm script机制, 在package.json文件中,输入对应的代码,就可以自动化执行相关的函数使用npm run test执行package.json中的内容,因为package.json包含test,所以可行,但是使用npm run compile会报错

可以申请免费的个人网站吗wordpress 熊掌号插件

本文为雪晴数据网《R语言大规模数据分析实战》 http://www.xueqing.tv/course/56 的课程学习笔记。 该课程目前更新到“第2章 Microsoft R Server简介”的微软数据科学家介绍MRS,后续教学主要是关于MRS的内容,再另外学习,所以本文只学习“第1…

网站建设给客户看的ppt模板建设双语的网站

目录 1. 锁(Locking)和乐观锁与悲观锁2. 分布式系统中保证数据一致性3. MySQL的复制延迟问题及解决方法4. 索引比全表扫描更快的情况5. 分区剪枝(Partition Pruning)6. 使用 LIMIT 和 OFFSET 的技巧7. 使用 EXPLAIN 语句分析查询性…

织梦怎么做单页网站网络黄页平台网址有哪些

一、简介 由于Spark主要是由Scala编写的,虽然Python和R也各自有对Spark的支撑包,但支持程度远不及Scala,所以要想更好的学习Spark,就必须熟练掌握Scala编程语言,Scala与Java较为相似,且在Scala中可以调用很…

2024年个体工商户年报常用的seo工具推荐

Moved to http://blog.tangcs.com/2008/05/29/java-on-windows-mobile/转载于:https://www.cnblogs.com/WarrenTang/archive/2008/05/29/1209726.html

网站的广度中交路桥建设有限公司是国企还是央企

1.已知账号密码&#xff0c;可SSH连接进行代码审计。2.登录可万能密码进入&#xff0c;也可注册后登录。3.修改url参数&#xff0c;发现报错。确定为Linux系统4.写入一句话&#xff0c;并提交。&#xff08;也可以文件上传&#xff0c;这里采用简洁的方法&#xff09; <?p…

网站框架图怎么做66公里智慧门店管理系统

全世界只有3.14 % 的人关注了青少年数学之旅本文授权转载于公众号&#xff1a;物道精致生活&#xff08;wudaojieqi&#xff09;&#xff0c;转载请联系物道中国曾经有过这么一所大学&#xff1a;在抗日战争中仓促搭起&#xff0c;被称为“史上最穷”&#xff0c;校舍破旧得梁思…

辽宁省建设工程信息网推荐中项网网页网络优化

斯蒂芬科尔本 &#xff08; Stephen Colebourne &#xff09;的文章“ Java 9可以使用六个星期 ”开始&#xff0c;“ Java 9仅仅六个星期 就已过时。” Colebourne参考了Mark Reinhold博客文章“ Moving Java Forwarding Faster ”&#xff0c;并写道&#xff1a;“新的Java发…