在Akka重新发送死信

在Akka重新发送死信,akka,Akka,我有一群演员在互相传递很多信息。这些参与者的默认队列很可能会导致许多参与者的内存不足 理想情况下,这就是我希望发生的事情: A发送到B B说“我太饱了,不能写字母L” A被告知这一点,并存储L(可能在硬盘中)A继续工作 当A空闲时,他回头看任何字母,发现像L这样的字母,演员(比如B)都吃不下了 A尝试将L重新发送到B 这个过程不断重复 从我需要的切换到阻塞队列。我的印象是,如果A向B发送消息,但B的邮箱已满,B会说“我已满”,并导致超时。然后将其发送到名为D的deadletterref 问题在于

我有一群演员在互相传递很多信息。这些参与者的默认队列很可能会导致许多参与者的内存不足

理想情况下,这就是我希望发生的事情:

  • A
    发送到
    B
  • B
    说“我太饱了,不能写字母
    L
  • A
    被告知这一点,并存储
    L
    (可能在硬盘中)<代码>A继续工作
  • A
    空闲时,他回头看任何字母,发现像
    L
    这样的字母,演员(比如
    B
    )都吃不下了
  • A
    尝试将
    L
    重新发送到
    B
  • 这个过程不断重复
  • 从我需要的切换到阻塞队列。我的印象是,如果
    A
    B
    发送消息,但
    B
    的邮箱已满,
    B
    会说“我已满”,并导致超时。然后将其发送到名为
    D
    deadletterref

    问题在于如何使阿克卡的“死信范式”适应上述步骤。在第3步中,我需要一种方法来告诉
    a
    它失败了,应该保存这封信以备以后使用。您似乎通过让这些参与者
    订阅
    死信事件总线来“告诉”他们。这迫使我让每个参与者都订阅了死信事件总线。如果
    A
    未能发送消息,而
    B
    未能发送消息,则
    A
    B
    的消息将被发送到
    死信队列,并且两者都必须对彼此的死信进行排序,以找到所需的死信。这似乎效率低下。有没有更好的办法


    注意:我不想对死信进行负载平衡,有些文章建议对死信队列进行负载平衡。

    您正在寻找的行为称为“背压”。 在使用akka流支持的akka中,请参阅本演示文稿

    您正在寻找的行为称为“背压”。 在使用akka流支持的akka中,请参阅本演示文稿

    我现在就不接受这个答案。更深入地研究这个问题,我的情况似乎是streams不起作用。我的系统中的每个参与者都必须与系统中的每个其他参与者进行通信。如果我理解正确的话,拥有100个参与者意味着每个参与者将有100个来源,以便进行这种细粒度的交流。也许你能进一步帮助我?我现在就不接受这个答案。更深入地研究这个问题,我的情况似乎是streams不起作用。我的系统中的每个参与者都必须与系统中的每个其他参与者进行通信。如果我理解正确的话,拥有100个参与者意味着每个参与者将有100个来源,以便进行这种细粒度的交流。也许你可以进一步帮助我?