fix: resolve kafka connection problems
This commit is contained in:
parent
e472fc9c0e
commit
ec0011cf64
|
@ -10,6 +10,7 @@ This project contains a few tasks for you to work with.
|
||||||
|
|
||||||
Create a subdirectory called `watcher` that will do a SQL query periodically to the `transactions` table,
|
Create a subdirectory called `watcher` that will do a SQL query periodically to the `transactions` table,
|
||||||
and for every new row on that table, the `watcher` will produce a message to `transactions` topic on Redpanda.
|
and for every new row on that table, the `watcher` will produce a message to `transactions` topic on Redpanda.
|
||||||
|
You will also need to create the `transactions` topic yourself.
|
||||||
|
|
||||||
The schema of the message is defined on the `kafka-schemas` directory. Search for `transaction.json` file.
|
The schema of the message is defined on the `kafka-schemas` directory. Search for `transaction.json` file.
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,14 @@ module balance-processor
|
||||||
|
|
||||||
go 1.20
|
go 1.20
|
||||||
|
|
||||||
require github.com/twmb/franz-go v1.13.2
|
require (
|
||||||
|
github.com/twmb/franz-go v1.13.2
|
||||||
|
github.com/twmb/franz-go/pkg/kadm v1.8.0
|
||||||
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/klauspost/compress v1.16.3 // indirect
|
github.com/klauspost/compress v1.16.3 // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.17 // indirect
|
github.com/pierrec/lz4/v4 v4.1.17 // indirect
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.4.0 // indirect
|
github.com/twmb/franz-go/pkg/kmsg v1.4.0 // indirect
|
||||||
|
golang.org/x/crypto v0.7.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
|
@ -4,5 +4,9 @@ github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc
|
||||||
github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
||||||
github.com/twmb/franz-go v1.13.2 h1:jIdDoFiq8uP3Zrx6TZZTXpaXrv3bh1w3tV5mn/B+Gw8=
|
github.com/twmb/franz-go v1.13.2 h1:jIdDoFiq8uP3Zrx6TZZTXpaXrv3bh1w3tV5mn/B+Gw8=
|
||||||
github.com/twmb/franz-go v1.13.2/go.mod h1:jm/FtYxmhxDTN0gNSb26XaJY0irdSVcsckLiR5tQNMk=
|
github.com/twmb/franz-go v1.13.2/go.mod h1:jm/FtYxmhxDTN0gNSb26XaJY0irdSVcsckLiR5tQNMk=
|
||||||
|
github.com/twmb/franz-go/pkg/kadm v1.8.0 h1:vvKwZpxYn+VmM32v4mKkecHLKavZW+HcYLRKKxly5ZY=
|
||||||
|
github.com/twmb/franz-go/pkg/kadm v1.8.0/go.mod h1:qUSM7pxoMCU1UNu5H4USE64ODcVmeG9LS96mysv1nu8=
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.4.0 h1:tbp9hxU6m8qZhQTlpGiaIJOm4BXix5lsuEZ7K00dF0s=
|
github.com/twmb/franz-go/pkg/kmsg v1.4.0 h1:tbp9hxU6m8qZhQTlpGiaIJOm4BXix5lsuEZ7K00dF0s=
|
||||||
github.com/twmb/franz-go/pkg/kmsg v1.4.0/go.mod h1:SxG/xJKhgPu25SamAq0rrucfp7lbzCpEXOC+vH/ELrY=
|
github.com/twmb/franz-go/pkg/kmsg v1.4.0/go.mod h1:SxG/xJKhgPu25SamAq0rrucfp7lbzCpEXOC+vH/ELrY=
|
||||||
|
golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A=
|
||||||
|
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||||
|
|
|
@ -3,6 +3,7 @@ package main
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
"github.com/twmb/franz-go/pkg/kadm"
|
||||||
"github.com/twmb/franz-go/pkg/kgo"
|
"github.com/twmb/franz-go/pkg/kgo"
|
||||||
"github.com/twmb/franz-go/pkg/kversion"
|
"github.com/twmb/franz-go/pkg/kversion"
|
||||||
"log"
|
"log"
|
||||||
|
@ -12,15 +13,18 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
kafkaHost, ok := os.LookupEnv("KAFKA_HOST")
|
kafkaHost, ok := os.LookupEnv("KAFKA_ADDRESSES")
|
||||||
if !ok {
|
if !ok {
|
||||||
kafkaHost = "localhost:9092"
|
kafkaHost = "localhost:9092"
|
||||||
}
|
}
|
||||||
|
|
||||||
kafkaOptions := []kgo.Opt{
|
kafkaOptions := []kgo.Opt{
|
||||||
kgo.MinVersions(kversion.V0_11_0()),
|
kgo.MinVersions(kversion.V0_11_0()),
|
||||||
kgo.SeedBrokers(strings.Split(kafkaHost, ",")...),
|
kgo.SeedBrokers(kafkaHost),
|
||||||
kgo.ConsumeTopics("transactions"),
|
kgo.ConsumeTopics("transactions"),
|
||||||
|
kgo.AllowAutoTopicCreation(),
|
||||||
|
kgo.WithLogger(kgo.BasicLogger(os.Stdout, kgo.LogLevelWarn, nil)),
|
||||||
|
kgo.ClientID("balance-processor"),
|
||||||
}
|
}
|
||||||
|
|
||||||
kafkaClient, err := kgo.NewClient(kafkaOptions...)
|
kafkaClient, err := kgo.NewClient(kafkaOptions...)
|
||||||
|
@ -29,6 +33,15 @@ func main() {
|
||||||
}
|
}
|
||||||
defer kafkaClient.Close()
|
defer kafkaClient.Close()
|
||||||
|
|
||||||
|
// Create balance topic
|
||||||
|
kafkaAdmin := kadm.NewClient(kafkaClient)
|
||||||
|
_, err = kafkaAdmin.CreateTopic(context.Background(), 1, 1, nil, "balance")
|
||||||
|
if err != nil && !strings.Contains(err.Error(), "already exists") {
|
||||||
|
kafkaClient.Close()
|
||||||
|
|
||||||
|
log.Fatalf("Creating 'balance' topic: %s", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
exitSignal := make(chan os.Signal, 1)
|
exitSignal := make(chan os.Signal, 1)
|
||||||
signal.Notify(exitSignal, os.Interrupt)
|
signal.Notify(exitSignal, os.Interrupt)
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,9 @@ services:
|
||||||
- --node-id 0
|
- --node-id 0
|
||||||
- --check=false
|
- --check=false
|
||||||
- --pandaproxy-addr PLAINTEXT://0.0.0.0:28082,OUTSIDE://0.0.0.0:8082
|
- --pandaproxy-addr PLAINTEXT://0.0.0.0:28082,OUTSIDE://0.0.0.0:8082
|
||||||
- --advertise-pandaproxy-addr PLAINTEXT://kafka:8082,OUTSIDE://localhost:8082
|
- --advertise-pandaproxy-addr PLAINTEXT://kafka:8082,OUTSIDE://kafka:8082
|
||||||
- --kafka-addr PLAINTEXT://0.0.0.0:29092,OUTSIDE://0.0.0.0:9092
|
- --kafka-addr PLAINTEXT://0.0.0.0:29092,OUTSIDE://0.0.0.0:9092
|
||||||
- --advertise-kafka-addr PLAINTEXT://kafka:29092,OUTSIDE://localhost:9092
|
- --advertise-kafka-addr PLAINTEXT://kafka:9092,OUTSIDE://kafka:9092
|
||||||
- --rpc-addr 0.0.0.0:33145
|
- --rpc-addr 0.0.0.0:33145
|
||||||
- --advertise-rpc-addr kafka:33145
|
- --advertise-rpc-addr kafka:33145
|
||||||
healthcheck:
|
healthcheck:
|
||||||
|
|
Loading…
Reference in New Issue