mq(kafka): scaffold Kafka gateway command and minimal TCP server with basic Start/Stop test; register command

This commit is contained in:
chrislu committed 2025-09-10 11:09:15 -07:00
1 parent 58e0c1b330
commit 5fec62f648
5 files changed
+306

No files matched your search

+1
View File
@@ -35,6 +35,7 @@ var Commands = []*Command{
cmdMount,
cmdMqAgent,
cmdMqBroker,
cmdMqKafkaGateway,
cmdDB,
cmdS3,
cmdScaffold,
+48
View File
@@ -0,0 +1,48 @@
package command
import (
"github.com/seaweedfs/seaweedfs/weed/glog"
"github.com/seaweedfs/seaweedfs/weed/mq/kafka/gateway"
)
var (
mqKafkaGatewayOptions mqKafkaGatewayOpts
)
type mqKafkaGatewayOpts struct {
listen *string
}
func init() {
cmdMqKafkaGateway.Run = runMqKafkaGateway
mqKafkaGatewayOptions.listen = cmdMqKafkaGateway.Flag.String("listen", ":9092", "Kafka gateway listen address")
}
var cmdMqKafkaGateway = &Command{
UsageLine: "mq.kafka.gateway [-listen=:9092]",
Short: "start a Kafka wire-protocol gateway for SeaweedMQ",
Long: `Start a Kafka wire-protocol gateway translating Kafka client requests to SeaweedMQ.
This is experimental and currently supports a minimal subset for development.
`,
}
func runMqKafkaGateway(cmd *Command, args []string) bool {
srv := gateway.NewServer(gateway.Options{
Listen: *mqKafkaGatewayOptions.listen,
})
glog.V(0).Infof("Starting MQ Kafka Gateway on %s", *mqKafkaGatewayOptions.listen)
if err := srv.Start(); err != nil {
glog.Fatalf("mq kafka gateway start: %v", err)
return false
}
// Serve blocks until closed
if err := srv.Wait(); err != nil {
glog.Errorf("mq kafka gateway wait: %v", err)
return false
}
return true
}