12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package rabbitmq
- import (
- "context"
- "fmt"
- "os"
- "time"
- jsoniter "github.com/json-iterator/go"
- "github.com/streadway/amqp"
- )
- type WebhookMessage struct {
- Body any `json:"body"`
- Config struct {
- Url string `json:"url"`
- } `json:"config"`
- }
- var json = jsoniter.ConfigCompatibleWithStandardLibrary
- func Webhook(webhookMessage WebhookMessage) error {
- conn, err := Init()
- if err != nil {
- return err
- }
- p, err := conn.Producer(&Exchange{
- Name: os.Getenv("RABBITMQ_WEBHOOK_EXCHANGE"),
- Kind: amqp.ExchangeDirect,
- Key: os.Getenv("RABBITMQ_WEBHOOK_ROUTING"),
- }, nil)
- if err != nil {
- return err
- }
- message, err := json.MarshalToString(webhookMessage)
- if err != nil {
- return err
- }
- fmt.Println("message", message)
- err = p.PublishExchange(amqp.Publishing{
- ContentType: "text/plain",
- DeliveryMode: amqp.Persistent,
- Body: []byte(message),
- })
- if err != nil {
- return err
- }
- // 关闭连接
- defer conn.conn.Close()
- return nil
- }
- func Init() (*Conn, error) {
- var broker2 = Broker{
- Ssl: false, // bool
- Username: os.Getenv("RABBITMQ_USER"), // string
- Password: os.Getenv("RABBITMQ_PASSWORD"), // string
- Server: os.Getenv("RABBITMQ_HOST"), // string
- Port: os.Getenv("RABBITMQ_PORT"), // string
- Vhost: os.Getenv("RABBITMQ_VHOST"), // string
- TSL: nil, // *tls.Config
- ProxyAddr: "", // string
- Beatime: 15 * time.Second, // time.Duration
- }
- conn, err := New(context.Background(), broker2)
- if err != nil {
- return nil, err
- }
- return conn, nil
- }
|