标签: akka

Akka的好用例

我听说过很多关于Akka框架(Java/Scala服务平台)的狂热,但到目前为止还没有看到很多用例的实际例子.所以我有兴趣听听开发人员成功使用它的事情.

只有一个限制:请不要包括编写聊天服务器的情况.(为什么?因为这被过度使用作为许多类似事物的一个例子)

java asynchronous scala use-case akka

596
推荐指数
12
解决办法
17万
查看次数

Akka Kill vs. Stop vs. Poison Pill?

Akka的新手问题 - 我正在阅读Akka Essentials,有人可以解释一下Akka Stop/Poison Pill与Kill之间的区别吗?这本书只提供了一个小小的解释"杀死同步与毒药是异步的".但是以什么方式?调用actor是否在此期间锁定线程?儿童演员是否在杀人,后停止等情况下被通知?一个概念与另一个概念的使用示例?

非常感谢!

scala akka

211
推荐指数
1
解决办法
5万
查看次数

何时使用actor而不是WebSphere MQ或Tibco Rendezvous等消息传递解决方案?

我已经阅读过什么设计决策有利于Scala的Actors而不是JMS的问题和答案.

通常,我们使用已经存在多年的消息传递解决方案:将诸如WebSphere MQ或Apache ActiveMQ的JMS实现用于点对点通信,或者使用Tibco Rendevous用于多播消息传递.

它们非常稳定,经过验证,可提供高可用性和高性能.然而,配置和设置似乎比Akka复杂得多.

何时以及为什么我应该将Akka用于上述产品(WebSphere MQ或ActiveMQ)到目前为止已成功使用的一些用例?为什么我应该考虑在未来的项目中使用Akka而不是WebSphere MQ或Tibco RV?

什么时候应该避开Akka?它是否提供与其他解决方案相同的高可用性和性能?或者甚至将Akka与其他消息中间件进行比较是一个坏主意?

也许在JVM环境中还有另一个消息传递解决方案除了JMS(点对点),TibcoRV(多播)和Akka之外我还应该考虑?

java scala jms actor akka

104
推荐指数
2
解决办法
3万
查看次数

akka与Erlang相比如何?

我最近一直在关注akka,这令人印象深刻.看起来它具有erlang的大部分杀手级功能 - 位置透明度,监督层次结构等等.有没有任何功能erlang有akka没有?

erlang akka

95
推荐指数
5
解决办法
3万
查看次数

Node.js如何使系统与Akka的演员模式不同?

我已经和我一起工作Node.js了一段时间,并认为自己对Java很好.但我刚刚发现Akka并立即对其演员模式感兴趣(据我所知).

现在,假设我的JavaScript技能与我的Scala/Java技能相当,我想专注于任一系统的实用性.特别是在Web服务方面.

据我所知,Node非常适合处理许多并发操作.我想资产管理系统的一个好的Node网络服务可以很好地处理许多用户同时提交更改(在大型,繁忙的流量应用程序中).

但是在阅读了Akka中的演员之后,它会在同样的事情上表现出色.我喜欢将工作量减少到一口大小的想法.此外,多年前我涉足Erlang并爱上了它使用的消息传递系统.

我处理许多处理复杂业务逻辑的应用程序,我认为现在是时候把它们加入到一个或另一个中.特别是升级传统的Struts和C#应用程序.

无论如何,避免神圣的战争,两个系统如何根本不同?它们似乎都面向同一个目标.也许Akka的"自我修复"架构具有优势.

编辑

看起来我正在接近投票.请不要将此问题视为"哪个更好,节点还是akka?".我正在寻找的是事件驱动库(如Node和基于演员的库,如Akka)的根本区别.

events node.js actor akka

92
推荐指数
3
解决办法
1万
查看次数

Akka或Reactor

我正在开始一个新项目(基于java).我需要将其构建为模块化,分布式和弹性架构.

因此,我希望业务流程能够相互通信,具有互操作性,但也是独立的.

我现在正在寻找两个框架,除了它们的年龄差异外,还表达了两种不同的观点:

选择上述框架之一时我应该考虑什么?

据我所知,到目前为止,Akka仍然以某种方式耦合(在某种程度上我必须'选择'我要发送消息的演员),但非常有弹性.虽然Reactor是松散的(基于事件发布).

有人可以帮我理解如何做出正确的决定吗?

UPDATE

在更好地回顾了Akka 的事件总线之后,我相信Reactor表达功能已经在某种程度上已经包含在Akka中.

例如,https://github.com/reactor/reactor#events-selectors-and-consumers上记录的订阅和事件发布可以在Akka中表示如下:

final ActorSystem system = ActorSystem.create("system");
final ActorRef actor = system.actorOf(new Props(
    new UntypedActorFactory() {

        @Override
        public Actor create() throws Exception {

            return new UntypedActor() {
                final LoggingAdapter log = Logging.getLogger(
                        getContext().system(), this);

                @Override
                public void onReceive(Object message)
                        throws Exception {
                    if (message instanceof String)
                        log.info("Received String message: {}",
                                message);
                    else
                        unhandled(message);
                }
            };
        }
    }), "actor"); …
Run Code Online (Sandbox Code Playgroud)

java spring reactor akka project-reactor

90
推荐指数
3
解决办法
3万
查看次数

Scala中的多个Actors实现有何不同?

随着Scala 2.9.0的发布,Typesafe Stack也被宣布,它结合了Scala语言和Akka框架.现在,虽然Scala在其标准库中有演员,但Akka使用自己的实现.而且,如果我们寻找其他实现,我们也会发现Lift和Scalaz也有实现!

那么,这些实现之间有什么区别?

scala actor akka

76
推荐指数
2
解决办法
7105
查看次数

如果抛出异常,Akka Actor不会终止

我目前正试图开始使用Akka,我面临一个奇怪的问题.我的演员有以下代码:

class AkkaWorkerFT extends Actor {
  def receive = {
    case Work(n, c) if n < 0 => throw new Exception("Negative number")
    case Work(n, c) => self reply n.isProbablePrime(c);
  }
}
Run Code Online (Sandbox Code Playgroud)

这就是我开始工作的方式:

val workers = Vector.fill(nrOfWorkers)(actorOf[AkkaWorkerFT].start());
val router = Routing.loadBalancerActor(SmallestMailboxFirstIterator(workers)).start()
Run Code Online (Sandbox Code Playgroud)

这就是我关闭所有东西的方式:

futures.foreach( _.await )
router ! Broadcast(PoisonPill)
router ! PoisonPill
Run Code Online (Sandbox Code Playgroud)

现在发生的事情是,如果我发送工具消息,其中n> 0(没有抛出异常),一切正常,应用程序正常关闭.但是,只要我发送一条导致异常的消息,应用程序就不会终止,因为仍有一个actor正在运行,但我无法弄清楚它来自哪里.

如果它有帮助,这是有问题的线程的堆栈:

  Thread [akka:event-driven:dispatcher:event:handler-6] (Suspended) 
    Unsafe.park(boolean, long) line: not available [native method]  
    LockSupport.park(Object) line: 158  
    AbstractQueuedSynchronizer$ConditionObject.await() line: 1987   
    LinkedBlockingQueue<E>.take() line: 399 
    ThreadPoolExecutor.getTask() line: 947  
    ThreadPoolExecutor$Worker.run() line: 907   
    MonitorableThread(Thread).run() line: …
Run Code Online (Sandbox Code Playgroud)

routing scala fault-tolerance actor akka

73
推荐指数
1
解决办法
7985
查看次数

Akka的演员与Scala的演员模型有什么不同

我发现还有一个Akka演员模型,所以我想知道Akka的演员和Scala的演员模特之间有什么区别?

scala actor akka

73
推荐指数
3
解决办法
1万
查看次数

Akka有限状态机实例

我试图利用Akka的有限状态机框架来处理我的用例.我正在研究一个处理通过各种状态的请求的系统.

此处的请求是需要与其依赖的应用程序一起部署的应用程序名称:

Request for application A -> A is in a QUEUED state
Discover A's dependency B -> B is in a QUEUED state
B is being processed -> B is in a PROCESSING STATE
A is being processed -> A is in a PROCESSING STATE
B is processed -> B is in a DONE state
A is processed -> A is in a DONE state
Run Code Online (Sandbox Code Playgroud)

为此我在发现时初始化有限状态机.所以AFSM是在请求进入时创建的,当从其中一个actor发现B时,FSM被初始化B.

我是否初始化FSM实例并将其传递给所有actor,同时tellFSM是否正在对数据执行操作以使状态机进入正确的状态?

这是状态机的相关部分:

when(QUEUED, matchEvent(requestAccepted.class, MyApp.class, …
Run Code Online (Sandbox Code Playgroud)

java scala state-machine akka

66
推荐指数
1
解决办法
1894
查看次数