首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Akka 指南 之「第 5 部分: 查询设备组」

由于房主会对整个家庭温度感兴趣,我们目标是能够查询一个组中所有设备参与者。让我们先研究一下这样查询 API 应该如何工作。 处理可能情况 我们面临第一个问题是,一个组成员是动态。...设置查询超时 由于我们需要一种方法来指示我们愿意等待响应时间,现在是时候引入一个我们还没有使用 Akka 特性,即内置调度器(built-in scheduler)功能了。...使用调度器(scheduler)很简单: 我们可以从ActorSystem中获取调度器,而ActorSystem又可以从 Actor 上下文中访问:getContext().getSystem().scheduler...这需要一个ExecutionContext,它是将执行计时器任务本身线程池。在我们示例中,我们通过传入getContext().dispatcher()来使用与 Actor 相同调度器。...此测试是前一个测试变体,现在使用组查询功能: @Test public void testCollectTemperaturesFromAllActiveDevices() { TestKit probe

1.1K20

Akka 使用系列之二: 测试

通过上一篇文章,我们已经大致了解怎么使用 Akka,期待细致用法。这篇文章将介绍如何用 Akka-testkitAkka 程序进行测试。...并行程序是最难调试程序类型之一,因此做好测试是相当重要事情。为了减轻 Akka 程序测试难度, Akka 官方专门开发了一个测试工具包 Akka-testkit。...这段代码将包含所有要测试元素,后面我们将示例怎么用 Akka-testkit 测试这段代码。...3 Akka-testkit 使用 Maven 项目要使用 Akka-testkit,需要在 pom.xml 文件中加入 akka-testkit 包,如下所示。...Akka 系列系列文章 Akka 使用系列之一: 快速入门 Akka 使用系列之二: 测试 Akka 使用系列之三: 层次结构和容错机制 Akka 使用系列之四: Future

1K70
您找到你想要的搜索结果了吗?
是的
没有找到

使用Akka HTTP构建微服务:CDC方法

一般情况下,在开发Web应用程序时候,从模型和流程定义开始,深入到软件开发中,都是使用TDD(测试驱动开发)方法:先写测试,考虑我们真正想要,以及我们如何使用它; 但微服务(microservices..." %% "akka-stream-testkit" % "2.4.20" % "test", "com.typesafe.akka" %% "akka-testkit"...另外,我已经用两种不同格式实现了测试,WordSpec和FunSpec,第一次用于所有的单元测试,第二次用于Pact测试,你可以按你想法随意使用。...这非常简单,两个参与者(提供者和消费者)定义与可能交互。...Akka HTTP Route TestKit实现,您可以在这里找到官方文档,它允许在这种格式路由上构建测试: REQUEST ~> ROUTE ~> check { ASSERTIONS

7.4K50

Akka事件驱动新选择

Akka 允许我们专注于满足业务需求,而不是编写初级代码。在 Akka 中,Actor 之间通信唯一机制就是消息传递。...Akka 对 Actor 模型使用提供了一个抽象级别,使得编写正确并发、并行和分布式系统更加容易。Actor 模型贯穿了整个 Akka 库,为我们提供了一致理解和使用它们方法。...@Test public void testGreeterActorSendingOfGreeting() { //testKit为单元测试提前加入SpringBean而准备对象...TestProbe testProbe = testKit.createTestProbe(); ActorRef...只要中间件都做不到可靠通信,如果我自己理解有问题,那么对于中间件来说就失去了原本意义,中间件本身也不是解决可靠性问题,主要解决是分布式环境下数据传输、数据访问、应用调度、系统构建和系统集成、流程管理等问题

90930

Akka简单性能测试

方案二 采用比较流行Akka框架来实现。 **Akka五大特性 ** 易于构建并行和分布式应用 可靠性(Resilient by Design) 系统具备自愈能力,在本地/远程都有监护。...弹性,无中心(Elastic — Decentralized) 自适应负责均衡,路由,分区,配置 可扩展(Extensible) 可以使用Akka 扩展包进行扩展。...因为之前一直研究Scala,Scala多线程处理性能是非常高,那基于Scala语言而开发出来Akka框架得到了广泛使用。...那么接下来我将使用一个非常简单例子,以及一些测试用例展现一下它性能。...代码如下: import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.actor.UntypedActor

1.2K10

Akka 指南 之「第 3 部分: 使用设备 Actors」

第一种“至多一次传递”是 Akka 使用方式,它是最廉价也是性能最好方式。...基于这些原因,Akka 解除了对应用程序本身保证责任,即你必须自己使用 Akka 提供工具来实现这些保证。这使你能够完全控制你想要提供保证。...我们设备 Actor 有责任为给定查询响应使用相同 ID 参数,这将使它看起来像下面这样。...测试 Actor 基于上面的简单 Actor,我们可以编写一个简单测试。您可以在此处「快速入门指南测试示例」中检查 Actor 测试完整示例。...,同时使用读/查询和写/记录功能: @Test public void testReplyWithLatestTemperatureReading() { TestKit probe = new TestKit

55630

SpringBoot下Akka简单使用

SpringBoot下Akka简单使用 Akka框架实现一个异步消息传输,通过定义演员来处理业务逻辑。 首先引入依赖 <!...receiveBuilder构造一个接收器Receive,然后使用ReceiveMatch函数,对不同类型请求进行分别处理;在处理内部可以使用 sender().tell发送返回值给请求者。...= ActorSystem.create(); ​ //通过这个系统管理对象创建actor,并返回当前actor地址,可以理解成现实生活中用户一个邮箱地址 //使用.../AkkaAsk") @ResponseBody @ApiOperation(value = "Akka使用Ask请求", notes = "Ask请求可以接受演员返回值", httpMethod.../AkkaAskStruct") @ResponseBody @ApiOperation(value = "Akka使用Ask请求带构造函数演员", notes = "带构造函数演员

59730

Akka 指南 之「邮箱」

注释:接口中所需类型为 Actor 创建邮箱中队列类型,如果队列未实现所需类型,则 Actor 创建将失败。 指定调度消息队列类型 调度器还可能需要运行在其上 Actor 使用邮箱类型。...如果 Actor 需要如上所述邮箱类型,则将使用该要求(requirement)映射来确定要使用邮箱类型;如果失败,则尝试使用调度要求(如果有)。...如果调度器需要如上所述邮箱类型,那么将使用该要求映射来确定要使用邮箱类型。 将使用默认邮箱akka.actor.default-mailbox。...,也可能不比默认队列快,具体取决于你用例,请确保正确地进行基准测试!...作为第二个参数传入配置是配置中描述使用此邮箱类型调度器或邮箱设置部分;邮箱类型将为使用每个调度器或邮箱设置实例化一次。

1.5K30

Akka 指南 之「配置」

你可以修改典型设置示例: 日志级别和日志记录器后端 启用远程处理 消息序列化程序 路由器定义 调度员调整 Akka 使用「Typesafe Config Library」,这对于配置你自己应用程序或使用或不使用...警告:如果你使用来自2.9.x系列 Scala REPL Akka,并且没有向ActorSystem提供自己ClassLoader,那么使用-Yrepl-sync启动 REPL,以解决 REPLs...Actor 部署配置 特定 Actor 部署设置可以在配置akka.actor.deployment部分中定义。在部署部分,可以定义调度程序、邮箱、路由器设置和远程部署等内容。...akka-actor akka-agent akka-camel akka-cluster akka-multi-node-testkit akka-persistence akka-remote akka-remote...(artery) akka-testkit akka-cluster-metrics akka-cluster-tools akka-cluster-sharding akka-distributed-data

2K20

Akka 指南 之「FSM」

有限状态机测试和调试 事件跟踪 滚动事件日志 示例 FSM 依赖 为了使用有限状态机(Finite State Machine)Actor,你需要将以下依赖添加到你项目中: <!...首先,考虑使用以下所有导入语句: import akka.actor.AbstractFSM; import akka.actor.ActorRef; import akka.japi.pf.UnitMatch...为了验证这个Buncher是否真的有效,使用TestKit」编写一个测试非常容易,这里使用 JUnit 作为示例: public class BuncherTest extends AbstractJavaTest...如果repeat为true,则计时器按interval参数给定固定速率调度。在添加新计时器之前,任何具有相同名称现有计时器都将自动取消。...有限状态机测试和调试 在开发和故障排除过程中,FSM 和其他 Actor 一样需要关注。如「TestFSMRef」和以下所述,有专门工具可用。

2.7K30

Akka 指南 之「集群使用方法」

如果在系统加载时遇到可疑误报,你应该为集群 Actor 定义一个单独调度程序,如「Cluster Dispatcher」中所述。 如何测试?...目前,使用sbt multi-jvm插件进行测试只记录在 Scala 中。有关详细信息,请转到此页对应 Scala 版本查看。 管理 HTTP HTTP API 提供了集群信息和管理。...默认调度程序应该足以执行集群任务,即不应更改akka.cluster.use-dispatcher。...如果在使用默认调度器时出现与集群相关问题,这通常表示你正在默认调度器上运行阻塞或 CPU 密集型参与者/任务(actors/tasks)。...为这些参与者/任务使用专用调度器,而不是在默认调度器上运行它们,因为这样可能会使系统内部任务匮乏。

4.6K60

聚焦于任务调度测试平台pytestx

设计理念 聚焦于任务调度,接口自动化80%本地编写,20%交由平台管理。 如果使用pytest做接口自动化,那么个人认为最好编写工具是PyCharm,任何低代码测试平台都无法取代。...当然不会代码,或者不使用pytest,那低代码测试平台,或者yaml,甚至excel写自动化用例,都是可以接受。而在使用pytest这个特定场景里面,要做平台化,平台功能就需要仔细斟酌。...既然编写用例最好使用PyCharm,平台也就只能专注于用例编排和任务调度,即创建任务,关联用例,批量运行,以及定时,并行,通知等。 pytestx正是基于此理念设计一款纯粹任务调度平台。...从pypi到git tep是上传到pypi,通过pip命令安装,使用tep startproject命令创建项目脚手架,代码结构分为项目代码和tep代码。...下载脚手架 既可以从使用git clone下载代码,也可以从页面下载,就像spring.io那样: fastapi到django 之前示例代码是调用fastapi启动应用,pytestx则将示例代码接口换成了

22110

ElasticMQ 0.7.0:使用Akka和Spray长轮询,非阻塞实现

要在本地内存运行一个SQS实现(例如,测试一个使用SQS应用程序),只需要下载jar文件)并运行: java -jar elasticmq-server-0.7.0.jar 这将启动一个地址为http...我们可以使用简单可变数据结构,而不需要任何线程同步,因为参与者模型(Actor Model)为我们处理了这个问题。...还有一个类似的早期项目,使用宏,Scala async。 使用Akka数据流,您可以像正常顺序代码一样编写使用Future代码。CPS插件会将其转换为在需要时使用回调。...使用Akka调度程序,我们还计划在指定超时之后发回空列表并删除条目。 当新消息到达时,我们只需从map上获取一个等待请求,然后尝试完成它。同样,所有同步和并发问题都由Akka参与者模型来处理。...请测试新版本,并告知我们您任何反馈! 亚当

1.5K90

Akka 指南 之「术语及概念」

温馨提示:Akka 中文指南 GitHub 地址为「akka-guide」,欢迎大家Star、Fork,纠错。...我们试图给出将在 Akka 文档范围内使用定义。 并发 vs. 并行 并发和并行是相关概念,但有一些小区别。并发意味着两个或多个任务正在取得进展,即使它们可能不会同时执行。...CPU 密集型任务可能会产生类似于阻塞行为。一般来说,最好使用异步 API,因为它们保证系统能够进行。...一个很好例子是,一个线程可以使用互斥来独占使用一个资源。如果一个线程无限期地占用资源(例如意外运行无限循环),则等待该资源其他线程将无法进行。相反,非阻塞意味着没有线程能够无限期地延迟其他线程。...典型场景是一个调度算法,它总是选择高优先级任务而不是低优先级任务。如果传入高优先级任务数量一直足够多,那么低优先级任务将永远不会完成。

77460

Python 调度相关包使用

schedule使用起来比较简单一个包安装:pip install schedule具体用法:import schedule# add schedule jobschedule.every(10).seconds.do...lambda: print("running"))# run schedulerwhile True: schedule.run_pending() time.sleep(1)运行带有参数...seconds.do(func, name="Tom")while True: schedule.run_pending() time.sleep(1)Apscheduler一个功能更为完整包安装...BackgroundScheduler:调度器在后台运行ExecutorThreadPoolExecutor:默认使用多线程执行器ProcessPoolExecutor:如果是 CPU 密集型任务可以使用多进程执行器...Job store:如果任务调度信息存在内存中,当程序退出后会丢失,可以其他存储器进行持久化存储MemoryJobStore: 默认使用内存存储SQLAlchemyJobStoreMongoDBJobStoreetc

9100

ElasticMQ 0.7.0:长轮询,使用Akka和Spray非阻塞实现

这是一次重大重写(即版本升级),升级之后将在核心使用Akka actors 并在REST层使用Spray。...要运行本地内存SQS实现(例如,测试使用SQS应用程序),只需要下载jar文件并运行: java -jar elasticmq-server-0.7.0.jar 这将在http://localhost...还有一个类似的项目,使用宏,Scala Async,但这个仍处于早期开发阶段。 使用Akka Dataflow,您可以编写使用Future们代码,就好像编写正常序列化代码一样。...使用Akka调度程序,我们还计划在指定时间超过之后发回空列表并删除条目。 当新消息到达时,我们只需从map上等待一个请求,然后尝试去完成它。...同样,所有同步和并发问题都由Akka和actor模型来处理。 请测试新版本,如果您有任何反馈,请让我们知晓! Adam

1.5K60

IDEA 编译运行 Spring Boot 2.0 源码

由于Spring Boot发布版本代码都在tag上,所以需要使用git tag命令查看所有的tag: git tag 然后切换到名为v2.0.0.RELEASEtag上: git checkout.../mvnw clean install或者标准mvn clean install命令来编译源代码,如果要使用标准mvn命令的话,Maven版本要求在3.5.0或以上。...Boot源码打包并安装到本地maven仓库,在打包过程中会忽略测试,因为运行单元测试时间特别长,下载源码目的是学习和分析Spring Boot原理,而并不是做定制开发,因此一些不影响学习单元测试可以忽略掉...总结 开源框架之所以被很多人使用,一方面是因为解决了一些常见痛点问题,一方面是因为可靠和健壮,保证用开源框架开发出来服务高可用。...提高服务可靠和健壮一方面就是单元测试,单元测试虽然繁琐,但让我们对自己写代码和别人写代码可靠性了然于胸。

1.6K20
领券