Вы хотите сделать пару вещей:
1.) Публикация контекста подписчика
mono.subscriberContext({ Context context ->
context.put("key", "value")
})
2.) Подписаться / получить доступ к контексту подписчика
mono.flatMap({ def r ->
return Mono.subscriberContext().map({ Context context ->
context.get("key")
context.get("keyOrMapOrStateObject").put("someKey", "someData")
return r
})
})
3.) Потенциально передать данные из одного события в последующее событие
mono.flatMap({ def r ->
return Mono.subscriberContext().map({ Context context ->
def someData = context.get("keyOrMapOrStateObject").get("someKey")
return r
})
})
Все вместе это будет выглядеть примерно так: (это отличный синтаксис)
mono.flatMap({ def r ->
return Mono.subscriberContext().map({ Context context ->
context.get("key")
context.get("keyOrMapOrStateObject").put("someKey", "someData")
return r
})
}).flatMap({ def r ->
return Mono.subscriberContext().map({ Context context ->
def someData = context.get("keyOrMapOrStateObject").get("someKey")
return r
})
}).subscriberContext({ Context context ->
context.put("key", "value")
context.put("keyOrMapOrStateObject", new HashMap())
})
Это грубый набросок - не готов "как есть", но он должен помочь вам понять шаблон.
Удачи!