В моем контроллере я должен вернуть результат длительного процесса. Итак, я использую Redis Pub / Sub для распределения работы. Однако мой подписчик, похоже, не работает и не возвращает ничего, что просто зависает.
Это то, что я пытаюсь. Я удалил некоторый код, чтобы показать проблему.
Вот мой контроллер
@RestController
@RequestMapping("/messages")
class TestController(private val redisOperations: ReactiveRedisOperations<String, Result>) {
@PostMapping
suspend fun receiveRequest(@RequestBody request: Request): Result = coroutineScope {
val subscriptionId = UUID.randomUUID().toString()
val asyncSubscriber = async {
redisOperations.listenToChannel(subscriptionId).awaitFirst()
}
redisOperations.convertAndSend(subscriptionId, Result(true, TextNode("test"))).awaitFirst()
asyncSubscriber.await().message // This is not being resolved.
}
}
Сделайте, мне нужно настроить что-нибудь еще, чтобы это работало.