ssl消费
消息 plaintext package main import ( "crypto/tls" "crypto/x509" "flag" "fmt" amqp "github.com/rabbitmq/amqp091go" "io/ioutil" "log" "time" ) var ( uri flag.String("uri", "amqps://USERNAME:PASSWORD@10.10.33.196:5671", "AMQP URI") exchange flag.String("exchange", "testexchange", "Durable, nonautodeleted AMQP exchange name") exchangeType flag.String("exchangetype", "direct", "Exchange type directfanouttopicxcustom") queue flag.String("queue", "testqueue", "Ephemeral AMQP queue name") bindingKey flag.String("key", "testkey", "AMQP binding key") consumerTag flag.String("consumertag", "simpleconsumer", "AMQP consumer tag (should not be blank)") lifetime flag.Duration("lifetime", 5time.Second, "lifetime of process before shutdown (0sinfinite)") ) func init() { flag.Parse() } func main() { c, err : NewConsumer(uri, exchange, exchangeType, queue, bindingKey, consumerTag) if err ! nil { log.Fatalf("%s", err) } if lifetime > 0 { log.Printf("running for %s", lifetime) time.Sleep(lifetime) } else { log.Printf("running forever") select {} } log.Printf("shutting down") if err : c.Shutdown(); err ! nil { log.Fatalf("error during shutdown: %s", err) } } type Consumer struct { conn amqp.Connection channel amqp.Channel tag string done chan error } func NewConsumer(amqpsURI, exchange, exchangeType, queueName, key, ctag string) (Consumer, error) { c : &Consumer{ conn: nil, channel: nil, tag: ctag, done: make(chan error), } var err error log.Printf("dialing %q", amqpsURI) caCert, err : ioutil.ReadFile("D:codeTestamqpexamplessslcacertificate.pem") if err ! nil { return nil, err } cert, err : tls.LoadX509KeyPair("D:codeTestamqpexamplessslclientopenstackcertificate.pem", "D:codeTestamqpexamplessslclientopenstackkey.pem") if err ! nil { return nil, err } rootCAs : x509.NewCertPool() rootCAs.AppendCertsFromPEM(caCert) tlsConf : &tls.Config{ RootCAs: rootCAs, Certificates: []tls.Certificate{cert}, //ServerName: "localhost", // Optional InsecureSkipVerify: true, } c.conn, err amqp.DialTLS(amqpsURI, tlsConf) if err ! nil { return nil, fmt.Errorf("Dial: %s", err) } go func() { fmt.Printf("closing: %s",