Kafka 주제를 생성하려면 매개변수를 별칭으로 전달하세요.

Kafka 주제를 생성하려면 매개변수를 별칭으로 전달하세요.

별칭을 사용하여 파티션 수와 복제가 포함된 Kafka 주제를 생성하고 싶습니다.

alias tcreate='bin/kafka-topics.sh --create --topic "$@" --partitions "$@" --replication-factor "$@" --zookeeper localhost:2181'

명령을 실행하면 tcreate 1 1다음 메시지가 나타납니다.

Exception in thread "main" java.lang.IllegalArgumentException: Only one of --bootstrap-server or --zookeeper must be specified
    at kafka.admin.TopicCommand$TopicCommandOptions.checkArgs(TopicCommand.scala:743)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:53)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)

어떻게 작동하게 만들까요?

답변1

bash를 사용한다고 가정하면 확인해야합니다GNU 배시 참조:

($@)는 1부터 시작하는 위치 매개변수로 확장됩니다.

또한 별칭은 위치 매개변수를 얻을 수 없습니다. 대신에 다음을 사용해야 합니다.기능적절한위치 매개변수.

다음과 같이 정의해야 합니다.

tcreate(){
bin/kafka-topics.sh --create --topic "$1" --partitions "$2" --replication-factor "$3" --zookeeper localhost:2181
}

각 매개변수가 명령의 특정 위치에서 대체됩니다. 또한 상대 경로는 현재 디렉터리에 크게 의존하고 이 기능은 특정 현재 디렉터리에서만 작동하므로 쉘 스크립트 파일에 대해 전체 경로를 사용하는 것이 좋습니다.

tcreate 1 1또한 세 번째 매개변수를 올바르게 입력한 경우 누락되었기 때문에 예제 명령 에서도 오류가 발생합니다.

답변2

이것은 나에게 효과적입니다.

alias ktc='f(){ bin/kafka-topics.sh --create --topic "$1" --partitions "$2" --replication-factor "$3" --zookeeper localhost:2181;  unset -f f; }; f'

그런 다음 터미널에서 다음 명령을 내렸습니다.

$ ktc t_name  1 1

관련 정보