У Oracle может быть атомный счетчик, который увеличивается каждый раз при присвоении идентификатора сотрудника.
Где вы должны поместить этот счетчик?
- Вы не можете поместить его внутрьпоток, так как потоки недолговечны и не разделяют состояние
- Вместо этого необходимо поместить счетчик в службу.Служба Corda - это долгоживущий объект, который создается при запуске узла и позволяет разделять состояние между потоками
Службу можно определить следующим образом:
@CordaService
class Oracle(val services: ServiceHub) : SingletonSerializeAsToken() {
private val counter = AtomicInteger(0)
val employeeId
get() = counter.getAndIncrement()
}
И вы получите идентификатор сотрудника в потоке, используя:
serviceHub.cordaService(Oracle::class.java).employeeId