Какой HTTP-глагол использовать для запуска публикации сообщений Kafka - PullRequest
1 голос
/ 26 июня 2019

Справочная информация Мне нужно реализовать способ, позволяющий разработчикам в нашей команде и владельцу продукта запускать повторную публикацию некоторых сообщений Kafka после запроса БД для нашего приложения Spring Boot.БД будет запрашиваться для данных, но никакие изменения не будут выполнены.Таким образом, действие не влияет на ресурс, удерживаемый приложением.

Потенциальное решение Я думаю о реализации конечной точки REST для достижения этой цели.Я знаю, что это не очень хороший вариант использования для реализации через REST, так как не существует "State Tranfer" для ресурсов, хранящихся в приложении.Итак ...

Вопрос

  1. Любые другие рекомендации для альтернативных способов достижения этого, кроме конечной точки REST?

  2. Если бы я реализовал это через конечную точку REST, какой HTTP-глагол мне следует использовать?

(Я проверил и не нашел ни одного ответа на этот вопрос в любом видепредыдущий ТАК.)

1 Ответ

2 голосов
/ 26 июня 2019

Какой HTTP-глагол использовать для запуска публикации сообщений Kafka?

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

Для этого примера разумными кандидатами являются GET и POST.(Технически, вы могли бы рассмотреть HEAD, что является своего рода специализированным случаем GET - здесь я его проигнорирую).

Важное различие, которое нужно понять, состоит в том, что семантика GET включает сейф ;описание «эффективно только для чтения», но важными моментами являются следствия этого.

Цель разграничения безопасных и небезопасных методов состоит в том, чтобы разрешить процессы автоматического поиска (пауки) и оптимизацию производительности кэша.(предварительная выборка) для работы без страха причинения вреда.

Автоматический поиск означает, что вы можете видеть GET запросы, даже если для них нет бизнес-мотивации.Если все в порядке, тогда использование GET - это нормально - и оно даже имеет некоторые преимущества, когда запросы отправляются через ненадежную сеть.

С другой стороны, если повторная публикация является «дорогой» или должна быть только в противном случаесделано "нарочно", тогда POST является более подходящим выбором.

Это может помочь представить это в контексте веб-страницы в браузере.Если вы предоставляете доступ через элемент a , браузер может попытаться оптимизировать работу пользователя, предварительно выбрав ресурс.С другой стороны, использование элемента формы с method: POST не будет предварительно извлечено, поскольку совместимые браузеры знают, что запрос не должен быть безопасным.

Интернет-мнение о [REST], похоже, разделено.

REST сильно страдает от того, что Мартин Фаулер назвал Semantic Diffusion .

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

REST - это архитектурный стиль ;эталонным приложением, созданным с использованием этого стиля, является World Wide Web .

Единственный остающийся открытым вопрос, который остается открытым, заключается в том, является ли REST правильным способом для запуска задания

Зависит от ограничений, под которыми вы работаете, и от того, насколько вы амбициозны.«Всем» доступны веб-клиенты, так что это дешевый способ передачи сообщения от клиента к серверу.С другой стороны, HTTP-запросы не очень малы, и в них есть множество встроенных возможностей, которые могут быть не более чем перетаскиванием.

Лошади для курсов.

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