gpt4 book ai didi

java - 干扰器 : setting EventHandler order

转载 作者:行者123 更新时间:2023-11-30 08:31:40 25 4
gpt4 key购买 nike

我是 disruptor 的新手,我正在使用 disruptor 在类似管道的结构中的线程之间传递。我可以使用 hadleEventsWith 或使用 after() 运行一组处理程序,如下所示。

disruptor.handleEventsWith(eventhandler1)
.then(eventhandler2)
.then(eventhandler3);

但是,我希望能够在不更改此处代码的情况下向此管道添加新的事件处理程序。为此,我向每个事件处理程序添加一个整数值。然后,我将这些值和相关的处理程序用于创建一个有序的处理程序列表。然后,向破坏者发出命令,我目前正在做的是

disruptor.handleEventsWith(handlerOrderList.get(0));
for (int i=1; i<handlerOrderList.size();i++) {
disruptor.after(handlerOrderList.get(i1)).then(handlerOrderList.get(i));
}

有更好的方法吗?

最佳答案

这样的内容可能更具可读性:

    EventHandler<YourTypeHere>[] handlers = getOrderedHandlersAsArray();
disruptor.handleEventsWith(handlers);

更新:你是对的。在上述情况下,处理程序将并行处理事件。要按顺序处理事件,您可以尝试以下操作:

    EventHandlerGroup<T> eventHandlerGroup = null;
for (T handler : handlers) {
if (eventHandlerGroup == null) {
eventHandlerGroup = disruptor.handleEventsWith(handler);
} else {
eventHandlerGroup.then(handler);
}
}

关于java - 干扰器 : setting EventHandler order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40523132/

25 4 0