Доступ к состоянию через функции Apache Pulsar - PullRequest
0 голосов
/ 26 октября 2019

Мне бы хотелось, чтобы одна функция агрегировала события и поддерживала состояние в бухгалтерии, в то же время позволяя другим функциям, обрабатывающим различные события, использовать это состояние (либо доступ по ключу, либо ранжирование по ключам, чтобы найти состояние.

Я не мог найти способ сделать это через объект контекста, есть ли другой способ?

1 Ответ

0 голосов
/ 28 октября 2019

Вы можете использовать методы

/**
 * 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 "";
}

}

...