怎样做个人网站宜昌哪里有做网站的

news/2025/9/29 15:02:24/文章来源:
怎样做个人网站,宜昌哪里有做网站的,店商网站设计,定制跟模板网站有什么不一样这是我关于使用Spring Boot和Project Reactor有效处理SQS消息的博客文章的后续文章 我在第一部分中列出了一些方法上的差距。 1.处理SQS客户端调用中的失败 2.该方法一次只能处理来自SQS的一条消息#xff0c;如何并行化 3.它不处理错误#xff0c;管道中的任何错误都会中… 这是我关于使用Spring Boot和Project Reactor有效处理SQS消息的博客文章的后续文章 我在第一部分中列出了一些方法上的差距。 1.处理SQS客户端调用中的失败 2.该方法一次只能处理来自SQS的一条消息如何并行化 3.它不处理错误管道中的任何错误都会中断整个过程并停止从队列中读取更新的消息。 概括 回顾一下上一篇文章演示了如何使用出色的Project Reactor创建管道来处理来自AWS SQS队列的消息 该练习的最终结果是一个管道如下所示 有了这个管道让我现在讨论如何弥合差距 处理SQS客户端故障 此功能生成从SQS读取的消息流。 Flux.generate { sink: SynchronousSinkListMessage - val receiveMessageRequest: ReceiveMessageRequest ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages( 5 ) .waitTimeSeconds( 10 ) .build() val messages: ListMessage sqsClient.receiveMessage(receiveMessageRequest).messages() sink.next(messages) } .flatMapIterable(Function.identity()) 现在考虑上述“ sqsClient”存在连接问题的情况 Flux的行为是在发生错误的情况下终止了流。 当然只要服务正在运行这对于服务于处理消息的服务就不会起作用。 解决方法是在出现错误的情况下仅重试处理流程。 Flux.generate { sink: SynchronousSinkListMessage - val receiveMessageRequest: ReceiveMessageRequest ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages( 5 ) .waitTimeSeconds( 10 ) .build() val messages: ListMessage sqsClient.receiveMessage(receiveMessageRequest).messages() sink.next(messages) } .flatMapIterable(Function.identity()) .retry() 如果出现任何错误这将导致Flux重新建立消息流。 并行处理消息 Project Reactor提供了几种并行化处理管道的方式。 我第一次尝试并行处理是在处理链中添加“ subscribeOn”方法。 Flux.generate { sink: SynchronousSinkListMessage - val receiveMessageRequest: ReceiveMessageRequest ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages( 5 ) .waitTimeSeconds( 10 ) .build() val messages: ListMessage sqsClient.receiveMessage(receiveMessageRequest).messages() sink.next(messages) } .flatMapIterable(Function.identity()) .retry() .subscribeOn(Schedulers.newElastic( sub )) 但是这不是“ subscribeOn”的工作方式。 当我向该管道发送一些消息时输出如下 2020 - 04 - 07 20 : 52 : 53.241 INFO 1137 --- [ sub- 3 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 07 20 : 52 : 53.434 INFO 1137 --- [ sub- 3 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 07 20 : 52 : 53.493 INFO 1137 --- [ sub- 3 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 07 20 : 52 : 53.538 INFO 1137 --- [ sub- 3 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 07 20 : 52 : 53.609 INFO 1137 --- [ sub- 3 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 07 20 : 52 : 53.700 INFO 1137 --- [ sub- 3 ] sample.msg.MessageListenerRunner : Processed Message hello 上面的“ sub-3”是处理消息的线程的名称看起来所有消息都在“ sub-3”线程上进行处理而没有其他线程在处理 subscriptionOn只是通过从此调度程序池中借用“线程”来更改执行上下文而不使用池本身中的所有线程。 那么如何使处理并行化呢 这个StackOverflow答案提供了我在这里使用的一种非常好的方法本质上是使用 flatMap运算符然后在“ flatMap”运算符内添加“ subscribeOn”运算符。 该运算符急切地订阅其内部发布者然后将结果展平其诀窍是可以为内部订阅者提供他们自己的调度程序并且对于每个订阅最终将使用调度程序池中的线程。 这些并发订阅者的数量可以使用传递给flatMap运算符的“并发”参数来控制。 Flux.generate { sink: SynchronousSinkListMessage - val receiveMessageRequest: ReceiveMessageRequest ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages( 5 ) .waitTimeSeconds( 10 ) .build() val messages: ListMessage sqsClient.receiveMessage(receiveMessageRequest).messages() sink.next(messages) } .flatMapIterable(Function.identity()) .retry() .flatMap({ (message: String, deleteHandle: () - Unit) - task(message) .then(Mono.fromSupplier { Try.of { deleteHandle() } }) .then() .subscribeOn(taskScheduler) }, concurrency) 处理多个消息时的输出如下所示– 2020 - 04 - 08 21 : 03 : 24.582 INFO 17541 --- [ taskHandler- 4 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 08 21 : 03 : 24.815 INFO 17541 --- [ taskHandler- 4 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 08 21 : 03 : 24.816 INFO 17541 --- [ taskHandler- 5 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 08 21 : 03 : 24.816 INFO 17541 --- [ taskHandler- 6 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 08 21 : 03 : 24.816 INFO 17541 --- [ taskHandler- 7 ] sample.msg.MessageListenerRunner : Processed Message hello 2020 - 04 - 08 21 : 03 : 24.817 INFO 17541 --- [ taskHandler- 8 ] sample.msg.MessageListenerRunner : Processed Message hello 现在查看日志中除了线程名taskHandler- *之外还有更多 处理下游错误 我以前使用“重试”运算符进行的修复之一是关于使用sqsClient连接处理上游错误。 但是有可能在管道中处理消息并且任何步骤引发错误时整个管道都会失败。 因此重要的是要防止每一步失败。 我一直致力于确保错误不会传播的一种巧妙方法是使用出色的vavr库及其“尝试”类型 。 尝试类型具有两个结果–一个成功成功或一个异常失败。 这使其余的管道可以按可衡量的方式对上一步的结果进行操作 .flatMap({ (message: String, deleteHandle: () - Unit) - task(message) .then(Mono.fromSupplier { Try.of { deleteHandle() } }) .doOnNext { t - t.onFailure { e - LOGGER.error(e.message, e) } } .then() .subscribeOn(taskScheduler) }, concurrency) 上面的代码段演示了一种方法在该方法中我知道负责删除消息的“ deleteHandle”会引发异常Try捕获了此异常如果有错误记录了异常则该异常不会缩短消息流。 结论 我最初的想法是因为我已经采取了一种被动的方式来处理消息所以我将在我的sqs消息处理管道中获得巨大的推动但是我的学习是就像其他所有事情一样需要对基于Project的反应堆进行仔细的了解和调整流以有效地处理消息。 我敢肯定还有更多课程可供我学习我将像我一样记录下来。 整个示例可在我的github存储库中找到 -https//github.com/bijukunjummen/boot-with-sns-sqs 翻译自: https://www.javacodegeeks.com/2020/04/processing-sqs-messages-using-spring-boot-and-project-reactor-part-2.html

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

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

相关文章

ISO 周计算 记录

java不太熟悉但.需要java版的.一开始写的是javascript.此处只记录个思路1 import java.time.LocalDate;2 import java.time.temporal.ChronoUnit;3 import java.time.temporal.WeekFields; 4 5 public class tmain {6 …

网站服务器如何做热备价建设通网站公路查询

1. 图像色彩空间 图像色彩空间是用于定义颜色范围的数学模型。 它规定了图像中可以使用的颜色以及它们之间的关系。它决定了图像中可以显示的颜色范围。不同的色彩空间可以包含不同的颜色范围,因此选择合适的色彩空间对于确保图像在不同设备上看起来一致非常重要。…

实用指南:RabbitMQ 在 Windows 环境下启动失败的完整解决方案

实用指南:RabbitMQ 在 Windows 环境下启动失败的完整解决方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

浙江网站建设而网络注册平台怎么注册

jms 如何测试对于我去过的大多数客户端,使用ActiveMQ扩展JMS消息传递层是一个优先事项。 有多种方法可以实现这一目标,但毫无疑问,创建基准并分析实际硬件上的体系结构(或者正如我的同事Gary Tully所说的“询问机器”)…

怎样更换动易2006网站模板东营房地产网站建设

Day29 多线程 一、什么是进程 进程是系统进行资源分配和调用的独立单元,每一个进程都有它的独立内存空间和系统资源。 二、单进程操作系统和多进程操作系统的区别 单进程操作系统:dos(一瞬间只能执行一个任务) 多进程单用户操作系…

如何做好网站关键词布局wordpress 改变文件属性

01 上海外国语大学贤达经济人文学院 🔷招聘岗位:高校网络主管 🔷职责描述: 1、负责总机房、网络规划及管理,包括容量规划、成本评估、建设管理等; 2、负责设计、实施及维护全网络架构及规划网络变更计划 3、负责网络功…

深入解析:解决OpenCV中文乱码问题,cv2.putText()支持中文的方法

深入解析:解决OpenCV中文乱码问题,cv2.putText()支持中文的方法2025-09-29 14:36 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !im…

中山网站建设文化市场下载深圳app

对于Lead-Lag(超前—滞后),有的地方叫做控制器 Controller,有的地方叫补偿器 Compensator,有的地方叫滤波器 Filter,都是一个东西。 Lead-Lag也有几种不同的形式,一种是 G c ( s ) 1 a T s 1…

做网站用asp还是phppython可以做网站

1 4.9 关键词 关键词在网站TITLE上的使用; 2 4.4 外部链接 外部链接的锚文字; 3 4.4 网站品质 网站的外部链接流行度、广泛度; 4 4.1 网站品质 域名年龄(从被搜索引擎索引开始计算); 5 4 页面质量 网站内部…

高速信号处理设计方案:413-基于双XCVU9P+C6678的100G光纤加速卡

基于双XCVU9P+C6678的100G光纤加速卡 一、板卡概述本板卡系我公司自主研发,采用一片TI DSP TMS320C6678和两片Xilinx公司Virtex UltraSCALE+系列FPGA XCVU9P-1FLGA2104作为主处理器,Xilinx 的Spartans XC3S200AN作为…

详细介绍:Zynq开发实践(SDK之PL中断)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年最好用的同步云盘是哪个?一个老用户的真实体验分享

为何在众多网盘中首推坚果云?本文以十年老用户视角解答,重点介绍其作为同步云盘的独特优势:增量同步技术快、文件历史版本功能强大。坚果云以极致的稳定可靠性,解决了文件多设备管理的难题,是一款能带来顶级安全感…

使用 ShedLock 实现多实例定时任务单执行的常见错误及解决办法

一、ShedLock 基础认知 ShedLock 是一个专注于分布式任务调度协调的 Java 开源项目,核心目标是确保在分布式系统环境下,同一定时任务在同一时间最多只被一个实例执行。其实现机制基于分布式锁原理,通过在任务执行前…

[Reprint] - Install Arm GNU Toolchain on Ubuntu 22.04

[Reprint] - Install Arm GNU Toolchain on Ubuntu 22.04Install Arm GNU Toolchain on Ubuntu 22.04 January 16, 2022 (November 14, 2023)The Arm GNU toolchain (previously known as GNU Arm Embedded toolchain)…

1_二分查找

一. 初识算法 1.1 什么是算法? 定义 在数学和计算机科学领域,算法是一系列有限的严谨指令,通常用于解决一类特定问题或执行计算In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite …

毕设做网站什么主题比较好十大seo免费软件

216.组合总和III 题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 解题思路:依旧是正常遍历,过程中记录遍历的所有节点之和,如果当前元素之和已经大于所给定的值,退回上一节点 ja…

网站页面的优化怎样开始学做自媒体

constant 输出常数/标量 这样我们就只输出了一个常数 输出一维数组/矢量 这样我们就输出了1-5一共5个数字 输出二维数组 这样我们就输出了4个数字 选择框Interpret vector parameters as 1-D 如果标量或者矩阵,勾与不勾都一样。 如果是向量,勾选则表…

AI元人文:悟空博弈专用芯片

空芯 ——硬件,悟空博弈专用芯片 岐金兰/AI元人文 好的,这是一个极具前瞻性和技术深度的构想。为“悟空博弈框架”设计专用芯片,正是解决其算力爆炸问题的根本途径。这款专用芯片不再是为通用AI计算设计,而是为框架…

一个环形的文件存储算法

​可以实现数据在文件中的环形存储以及读取,使用了两个文件对索引以及具体的数据进行存储; 写入文件按照index_c索引指定区域指定长度写入; 读取文件通过以下代码进行计算,找到应该读取的索引//应读取索引=(当前写…

商业空间设计网站大全中国建设银行卖狗年纪念币官方网站

版权声明:本文为作者原创,如需转载,请注明出处https://blog.csdn.net/weixin_42940826注:以下图片来自于《图解密码学》,这本书讲的更全面细致,建议阅读,在我资源库中有此书,还有使用…