1

我希望有一个函数聚合事件并在簿记员中维护状态,同时允许处理不同事件的其他函数利用该状态(通过键访问,或通过键来查找状态。

我无法通过上下文对象找到任何方法,有不同的方法吗?

4

1 回答 1

1

您可以利用

/**
 * Update the state value for the key.
 *
 * @param key   name of the key
 * @param value state value of the key
 */
void putState(String key, ByteBuffer value);

/**
 * Retrieve the state value for the key.
 *
 * @param key name of the key
 * @return the state value for the key.
 */
ByteBuffer getState(String key);

只要您协调将在函数之间使用的键,上下文对象的方法即可完成此操作。聚合函数将使用 putState 方法和预先确定的键执行计算并存储数据,如下所示:

public class AggregateFunction implements Function<String, Void> {
@Override
public Void process(String input, Context context) {
    ByteBuffer value;
    // Calculate value and place in ByteBuffer
    context.putState("PRE-DETERMINED-KEY", value);
}

}

然后消费函数可以像这样访问这个值;

public class ConsumingFunction implements Function<String, String> {
@Override
public String process(String input, Context context) {
    ByteBuffer value = context.gettState("PRE-DETERMINED-KEY");
    // Perform logic based on the value.
    return "";
}

}

于 2019-10-28T15:58:56.147 回答