我正在进行样本测试,通过客户端构建调用lambda函数,如下所示:
LambdaInvokerFactory.builder
.lambdaClient(AWSLambdaClientBuilder.defaultClient)
.build(classOf[HelloLambdaClient])
每当我连续执行同步执行时,我的lambda初始化启动随机变量。此随机值以Lambda响应打印(如下所示)。 Lambda代码具有睡眠功能,可以执行~2s。这是输出:
请求返回成功:b3059f87-50f1-11e7-9f5d-ed6e02ee1217。随机值为:5861335772453319884剩余ms:28498 ms VALUE IS:10
成功返回请求:b3f41e37-50f1-11e7-82fb-3750155d81e4。随机值为:5861335772453319884剩余ms:28498 ms VALUE IS:11
成功返回请求:b4e4243d-50f1-11e7-8abb-ad83d8f0c65c。随机值为:5861335772453319884剩余ms:28498 ms VALUE IS:12
成功返回请求:b5d33eef-50f1-11e7-b89a-79ba5c4113d5。随机值为:5861335772453319884remaining ms:28498 ms VALUE IS:13
成功返回请求:b6c31caf-50f1-11e7-86ab-cd495fa85bb3。随机值为:5861335772453319884remaining ms:28498 ms VALUE IS:14
成功返回请求:b7b322bc-50f1-11e7-b7a3-f789b1e8355b。
我们清楚地看到我们有相同的JVM,同一个类响应每个请求(随机值总是相同的)。
现在,如果我在这些调用之间添加一些异步调用(InvocationType=Event
) - 因此实际上有很多并发调用,输出就会像这里一样开始改变:
成功返回请求:1dd4caca-50ef-11e7-8a78-83ef7e890b67。随机值为:-18127642905056328剩余ms:28498 ms VALUE IS:21
成功返回请求:1ec45ae6-50ef-11e7-b7ed-a77459f1846a。随机值为:-18127642905056328剩余ms:28498 ms VALUE IS:22
成功返回请求:1fb54a81-50ef-11e7-94d2-97694951faa1。随机值为:-18127642905056328剩余ms:28498 ms VALUE IS:23
成功返回请求:20b3332a-50ef-11e7-b99e-0955a3fdf5d0。随机值为:663265193956577535剩余ms:28498 ms VALUE IS:7
(上面的最后一次调用结束于另一个lambda实例,然后是之前的那个)。
每次进行并发呼叫时,它都具有相当的可重现性。
问题:
Akka
为您提供演员(当您处理消息时,您保证在thread-safe
环境中 - 至少在您自己引入多线程之前)?