GraphQL service API
Exec commands bellow to generate your own GraphQL handlers by GraphQL schema:
export GOPATH=/home/kostya/go/src
go mod init
go get github.com/99designs/gqlgen
go run github.com/99designs/gqlgen init
go mod tidy
go run github.com/99designs/gqlgen generateSometimes some errors happened, you need to try to install manually:
go get github.com/99designs/gqlgen/codegen/[email protected]
go get github.com/99designs/gqlgen/internal/[email protected]
go get github.com/99designs/[email protected]
go run github.com/99designs/gqlgen generate
Kafka
Kafka version > 2.2:
/home/kostya/kafka/kafka_2.12-3.6.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic
create topic:
/home/kostya/kafka/kafka_2.12-3.6.0/bin/kafka-topics.sh --create --topic TutorialTopic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
send the message to topic:
cat msg.json | /home/kostya/kafka/kafka_2.12-3.6.0/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic FIO > /dev/null
read a message from topic:
/home/kostya/kafka/kafka_2.12-3.6.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning
Manuals and articles thats helped and have been notable useful for me:
-
https://www.digitalocean.com/community/tutorials/how-to-install-apache-kafka-on-ubuntu-20-04
https://www.sohamkamani.com/golang/working-with-kafka/
https://hevodata.com/learn/postgresql-partitions/#t8
Про создание проекта (модуля) на Го с несколькими пакетами
В go существуют понятия: пакет -> модуль -> репозиторий, т.е. модуль состоит из пакетов, репозиторий из модулей.
Для того чтобы добавить пакет pkgA в модуль нужно:
- создать каталог pkgA внутри модуля с имененм пакета pkgA
mkdir pkgA
cd pkgA- создать внутри каталога pkgA какой то файл some.go в которм в заголовке указать package pkgA и те функции которые будут
touch some.go
vim some.go package pkgA
func MyFun(a int) int {
return a + 5
}То, что будет экспортироваться обязательно должно начинаться с заглавной буквы (соглашения в Го)
(про это хорошо написано тут: https://golangbyexample.com/exported-unexported-fields-struct-go/)
- внутри директории с пакетом pkgA выполнить команду
go mod init pkgAпоправить версию go на ту что используется в модуле при необходимости
- в корневом каталоге модуля д.ю. файл go.work, в нем перечислаяются пути к директориям с пакетами, добавить туда путь к пакету
go 1.21.1
use (
.
./rest
./data_enrichment
./graphql
./types
./db_utils
)-
в файле указать в импортах имя пакета import "pkgA" длЯ использования функций и данных из него
-
можно вызвать функию pkgA.MyFun(678)