This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
nats-cli/nats-pub/app.go
2018-01-17 08:20:53 -05:00

52 lines
1.2 KiB
Go

package main
import (
"flag"
"log"
nc "github.com/gered/nats-cli"
"github.com/nats-io/nats"
)
func usage() {
log.Fatalf("nats-pub [-s server] [-tls] [-tlscert CERT_FILE] [-tlskey KEY_FILE] [-tlscacert CA_FILE] [-tlsverify] <subject> <message>")
}
func main() {
log.SetFlags(0)
var url = flag.String("s", nats.DefaultURL, "NATS comma-separate server URL list")
var tls = flag.Bool("tls", false, "Enable TLS")
var tlsCertPath = flag.String("tlscert", "", "Certificate file")
var tlsKeyPath = flag.String("tlskey", "", "Private key file for certificate")
var tlsCACertPath = flag.String("tlscacert", "", "Client certificate CA file")
var tlsVerify = flag.Bool("tlsverify", false, "Enable TLS connection verification")
flag.Usage = usage
flag.Parse()
if flag.NArg() < 2 {
usage()
}
var subject = flag.Arg(0)
var message = flag.Arg(1)
conn, err := nc.Connect(*url, *tls, *tlsCertPath, *tlsKeyPath, *tlsCACertPath, *tlsVerify)
if err != nil {
log.Fatalf("Failed to connect to NATS: %s", err)
}
conn.Publish(subject, []byte(message))
conn.Flush()
err = conn.LastError()
if err != nil {
log.Fatal(err)
}
log.Printf("Published message on subject %s\n", subject)
conn.Close()
}