Как я понимаю, используя образ док-станции слияния реестра Schema (не с упругостью zookeeper, но с упругостью kafka), мы можем объявить имя хоста контейнера для Kafka с помощью переменной SCHEMA_REGISTRY_HOST_NAME
env.
Если я пытаюсь использовать SCHEMA_REGISTRY_PORT
, я получаю следующую ошибку:
PORT is deprecated. Please use SCHEMA_REGISTRY_LISTENERS instead.
Почему мы не можем установить связанный порт? Я могу получить этот динамический порт (динамический порт, который хост-машина динамически отображал в моем контейнере), но как мне поделиться им с Kafka?
РЕДАКТИРОВАТЬ 1:
Чтобы добавить больше деталей,Вот пример назначения, сделанного координатором реестра схемы:
[2019-10-25 11:55:47,813] INFO Finished rebalance with master election result: Assignment{version=1, error=0, master='sr-1-7a9a403a-63cc-4fed-b548-10ea440863d5', masterIdentity=version=1,host=10.135.124.179,port=29932,scheme=http,masterEligibility=true} (io.confluent.kafka.schemaregistry.masterelector.kafka.KafkaGroupMasterElector)
Как вы можете видеть, есть имя хоста и порт (выделено жирным шрифтом). имя хоста происходит из переменной SCHEMA_REGISTRY_HOST_NAME
, но согласно коду отсюда port :
/**
* A Schema Registry instance's identity is in part the port it listens on. Currently the port can
* either be configured via the deprecated `port` configuration, or via the `listeners`
* configuration.
*
* <p>This method uses `Application.parseListeners()` from `rest-utils` to get a list of
* listeners, and returns the port of the first listener to be used for the instance's identity.
*
* <p></p>In theory, any port from any listener would be sufficient. Choosing the first, instead
* of say the last, is arbitrary.
*/
// TODO: once RestConfig.PORT_CONFIG is deprecated, remove the port parameter.
static SchemeAndPort getSchemeAndPortForIdentity(int port, List<String> configuredListeners,
String requestedScheme)
(https://github.com/confluentinc/schema-registry/blob/5af0ca3be1138fe483d0f90f4ccfd4f02f158334/core/src/main/java/io/confluent/kafka/schemaregistry/storage/KafkaSchemaRegistry.java#L211-L223)
Таким образом, единственный способ объявить порт - настроить его с помощью прослушивателей, что может раздражать (но все же возможно в качестве обходного пути).