Что произойдет, если эти две функции вызываются одновременно для одного и того же ключа?
MatchBinder - это, по сути, удобный способ написать одну функцию StateFun, которая начинает свое выполнение с первого сопоставления тип (или свойства) входящего сообщения. По сути, это способ избежать написания такого кода:
...
if (message instanceof A) {
handleA((A) message);
} else if (message instanceof B) {
handleB((B) message);
}
...
Итак, на самом деле, хотя вы предоставляете «разные» Java функции для каждого случая привязки, это вызывается та же функция StateFun, и будет выбран правильный случай привязки.
Есть ли механизм очереди для функций с отслеживанием состояния, вызываемых для того же ключа?
Да, функции StateFun будет вызываться последовательно для каждого адреса. Хотя функция применяется для определенного адреса c, никакое другое сообщение для этого адреса не будет применяться одновременно. Это происходит почти бесплатно, благодаря наличию Apache Flink в качестве фактического времени выполнения.
Можно ли заблокировать доступ к состоянию / обновление для последовательного доступа?
Доступ к состоянию и модификации являются atomi c и последовательными по адресу.