Правильно ли вызывать подписку в асинхронном контексте? ⇐ JAVA
-
Гость
Правильно ли вызывать подписку в асинхронном контексте?
Я храню ключи шифрования в базе данных Redis. Я хочу реализовать резервный механизм для генерации ключей, если они еще не присутствуют. Что меня смущает в решении, которое я придумал, так это то, что я вызываю subscribe в асинхронном контексте. Моя IDE указала мне на эту проблему. Итак, вопрос в том, как бы вы реализовали этот запасной вариант?
public Mono getEncryptionKey(Stringentity) { вернуть reactiveRedisOperations.opsForValue() .get("частный") .switchIfEmpty( Mono.create(stringMonoSink -> { пытаться { вар PrivateKeyEncoded = ... вар publicKeyEncoded = ... реактивныйRedisOperations.opsForValue() .multiSet(Map.of( "частный", PrivateKeyEncoded, "публичный", publicKeyEncoded )) .subscribe(успех -> { stringMonoSink.success(privateKeyEncoded); }); } catch (Throwable e) { stringMonoSink.error(e); } }) ); }
Я храню ключи шифрования в базе данных Redis. Я хочу реализовать резервный механизм для генерации ключей, если они еще не присутствуют. Что меня смущает в решении, которое я придумал, так это то, что я вызываю subscribe в асинхронном контексте. Моя IDE указала мне на эту проблему. Итак, вопрос в том, как бы вы реализовали этот запасной вариант?
public Mono getEncryptionKey(Stringentity) { вернуть reactiveRedisOperations.opsForValue() .get("частный") .switchIfEmpty( Mono.create(stringMonoSink -> { пытаться { вар PrivateKeyEncoded = ... вар publicKeyEncoded = ... реактивныйRedisOperations.opsForValue() .multiSet(Map.of( "частный", PrivateKeyEncoded, "публичный", publicKeyEncoded )) .subscribe(успех -> { stringMonoSink.success(privateKeyEncoded); }); } catch (Throwable e) { stringMonoSink.error(e); } }) ); }
Мобильная версия