Как использовать сообщение RabbitMQ как «Rest Api» для поиска сущностей? - PullRequest
0 голосов
/ 18 декабря 2018

У меня проблема с решением в приложении.Я покажу пример об этом.

У меня есть очередь rabbitmq в системе, которая отвечает за возврат заказов, вызванных другими системами (связь между этими системами только через сообщение).До этого времени единственный возможный поиск заказа был по коду заказа .

. Он работает хорошо.Когда я ищу по коду заказа, я также фильтрую по заказу с контрактами и удаляю (логически).Таким образом, если у заказа нет контрактов или он был удален, запрос не возвращает регистры.

Теперь одна из этих систем должна найти Заказы без контрактов и / или удаленных.

По сути, я считаю, что мне нужно построить ту же логику, которая используется в APIотдохните как этот, но используя сообщение очереди:

/api/orders?id=123455?deleted=true&hasContracts=true

Сделайте это легко с сообщением.Мне просто нужно отправить сообщение в этом формате.

{
    "code": 123,
    "deleted": true,
    "hasContract": true
}

Отображение значений для классов Long и Boolean.Если информация была null, этот фильтр будет игнорироваться запросом, кроме обязательного code.

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

1 Ответ

0 голосов
/ 20 декабря 2018

Это имеет смысл для меня;использование RPC с RabbitMQ похоже на RPC с HTTP / gRPC / ..., поэтому у вас есть много вариантов здесь:

  • если вам нужна большая гибкость, вы можете
    • создать свой собственныйязык запросов (как в примере выше)
    • использовать что-то вроде GraphQL
  • , если ваши варианты использования ограничены, вы можете разделить конечные точки API с помощью нескольких ключей маршрутизации(REST-over-AMQP).

Надеюсь, это поможет.

...