C# do tnet core 3.0 обменивается данными между маршрутом контроллера и слушателем служебной шины - PullRequest
0 голосов
/ 09 мая 2020

У меня есть приложение web api do tnet core 3.1. Приложение представляет собой шлюз для предоставления различных других служб, которые обмениваются данными через служебную шину (очереди, темы). Мы используем служебную шину для асинхронного обмена сообщениями между службами. Мне не нужна синхронная c связь между шлюзом и другими службами.

Итак, я пытаюсь найти способ получить запрос в контроллере, например, создать ресурс и отправить эту команду на служебную шину, тогда сядь и жди.

Тем временем служба сохранит команду в базу данных и выдаст событие. Шлюз прослушивает topi c, чтобы получить сообщение, и теперь мне нужно каким-то образом передать это сообщение обратно в запрос в контроллере, который ожидает, что это сообщение завершит sh собственное выполнение.

Ответы [ 2 ]

0 голосов
/ 10 мая 2020

Вы создаете свой ресурс асинхронно, поэтому не пытайтесь создать впечатление синхронного поведения. Верните код состояния HTTP 202 из запроса API и позвольте клиенту запросить созданный ресурс позже.

0 голосов
/ 10 мая 2020

Насколько я знаю, вы не можете знать, имеет ли выполнение обработчика завершение sh должным образом, ожидая в контроллере (как в вашем случае) прямым путем, но, возможно, вы можете сделать work arround.

Как вы знаете, служебная шина имеет очередь или topi c, где слушатель может получать отправленные сообщения. Но также у него есть DeadLetter, где неправильные сообщения возвращаются в очередь, если возникает какое-либо необработанное исключение, любое сообщение имеет внутренний идентификатор или также ваше настраиваемое тело имеет идентификатор, который вы можете использовать для его отслеживания и поиска в обеих очередях или темах. . Возможно, это может решить вашу проблему, но это совсем не эффективность, поскольку это не желаемая функциональность такого рода услуг, потому что, на самом деле, его функция - сообщить вам, что ваше сообщение поставлено в очередь, а затем вам следует следить за своим исполнением и обрабатывать сообщение в своей службе.

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