123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package zapx
- import (
- amqp "github.com/rabbitmq/amqp091-go"
- )
- func NewWriter(conn *amqp.Connection) (*MQWriter, error) {
- ch, err := conn.Channel()
- if err != nil {
- return nil, err
- }
-
-
- queue, err := ch.QueueDeclare(QueueLogRecord, true, false, false, false, nil)
- if err != nil {
- return nil, err
- }
- ws := &MQWriter{
- ch: ch,
- queue: queue,
- }
- return ws, nil
- }
- type MQWriter struct {
- ch *amqp.Channel
- queue amqp.Queue
- }
- func (w *MQWriter) Write(bs []byte) (int, error) {
- p := amqp.Publishing{}
- WriteLogPublishBody(&p, bs)
- err := w.ch.Publish("", w.queue.Name, false, false, p)
- if err != nil {
- return 0, err
- }
- return len(bs), nil
- }
- func (w *MQWriter) Sync() error { return nil }
- func (w *MQWriter) Close() error { return w.ch.Close() }
|