Технически вы можете это сделать. Основная причина, по которой люди этого не делают, особенно для мобильных приложений, заключается в том, что было бы довольно сложно поддерживать долгосрочную эволюцию продукта, контролировать его безопасность или даже масштаб.
В последние годы API-интерфейс клиентов Kafka претерпел значительные изменения (к лучшему, но это все-таки изменение). Он также включает в себя механизмы авторизации и аутентификации, но у вас мало свободы в том, что вы можете сделать с ними. Kafka не построена на стандартизированном протоколе и не зависящей от технологии спецификации, такой как JMS, которая может показаться немного более гибкой.
Кроме того, между основными версиями совместимость не гарантируется, как и для большинства существующих технологий. Может случиться так, что вам нужно будет хранить несколько версий сервера в течение длительного времени только потому, что некоторые мобильные клиенты все еще устарели и существует связь с конкретной версией клиента, которая сама связана с конкретной версией сервера.
С другой стороны, по той же причине может также случиться так, что вам придется долго обрабатывать старые версии схем сообщений, просто чтобы старые клиенты были довольны.
Именно тогда вступает в действие HTTP и, более конкретно, шаблон шлюза API .
HTTP API легче регулировать, выполнять ограничение скорости, применять настраиваемые политики безопасности, настраиваемые стратегии аутентификации / авторизации и т. Д. И они основаны на стандартном протоколе, который используется во всем Интернете.
Существуют также преимущества использования HTTP, когда вы планируете интеграцию некоторых партнеров с помощью вашей серверной платформы. Как они могут сделать это легко, не меняя технологический стек.
Не выставляя Kafka внешним клиентам, вы можете позже изменить базовый технологический стек, не влияя на клиентов. Честно говоря, хотя Kafka - блестящая технология, сложно конкурировать с HTTP за интернет-общение. Kafka на самом деле предоставляет REST Proxy , клиент на основе HTTP, который, как можно предположить, может использоваться для такого рода вещей.