Java Akka - 如何为 PriorityMailbox 编写比较器<Envelope>?

Java Akka - How to write a Comparator<Envelope> for a PriorityMailbox?

我正在尝试按照 in the docs 所述创建一个 UnboundedPriorityMailbox。要扩展 UnboundedPriorityMailbox 我的 IDE (IntelliJ) 强制我 @override 方法 public Comparator<Envelope> cmp(),这在文档中没有描述。此外,我在其他地方找不到任何示例如何实现此方法。我知道 Comparator 是如何工作的,但我不知道如何将它与类型 Envelope 一起使用:-/

代码如下:

public class MyPrioMailbox extends UnboundedPriorityMailbox {
    // needed for reflective instantiation
    public MyPrioMailbox(ActorSystem.Settings settings, Config config) {
        // Create a new PriorityGenerator, lower prio means more important
        super(new PriorityGenerator() {
            @Override
            public int gen(Object message) {
                if (message.equals(PoisonPill.getInstance()))
                    return 1; // 'highpriority messages should be treated first if possible
                else
                    return 0; // By default they go between high and low prio
            }
        });
    }

    @Override
    public Comparator<Envelope> cmp() {
        return new Comparator<Envelope>() {
            @Override
            public int compare(Envelope t1, Envelope t2) {
                return 0; // <-- HOW TO COMPARE t1 and t2 ?
            }
        };
    }

    @Override
    public int initialCapacity() {
        return 10;
    }
}

优先邮箱的要点是能够为不同的消息类型分配不同的优先级。 Envelope 在 return 上有一个 message() 方法,一个 Object 表示要传递给您的演员的消息(通过 onReceive)。从每个信封中获取 message() 并检查它们是什么类型,然后根据它分配比较器的结果。如果您使用的是优先级邮箱,那么您必须拥有希望以 higher/lower 优先级处理的邮件,因此请查看 message() 是否是 Envelope 之一的那种类型,并且return 根据 Comparator

规则的整数