Реактивный подписчик Redis не работает, используя Kotlin Coroutine - PullRequest
0 голосов
/ 08 апреля 2020

В моем контроллере я должен вернуть результат длительного процесса. Итак, я использую 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.
    }
}

Сделайте, мне нужно настроить что-нибудь еще, чтобы это работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...