104 lines
2.0 KiB
Go
104 lines
2.0 KiB
Go
package rabbitmq
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
amqp "github.com/rabbitmq/amqp091-go"
|
|
)
|
|
|
|
const Version = "1.0.0"
|
|
|
|
type Publisher interface {
|
|
Publish(ctx context.Context, exchange, routingKey string, msg *Message) error
|
|
Close() error
|
|
}
|
|
|
|
type Consumer interface {
|
|
Consume(ctx context.Context) error
|
|
Close() error
|
|
}
|
|
|
|
type MessageHandler func(ctx context.Context, msg *Message)
|
|
|
|
type Client interface {
|
|
Publisher() Publisher
|
|
RegisterConsumer(handler MessageHandler, opts *ConsumerOptions) Consumer
|
|
DeclareQueue(name string, opts QueueOptions) error
|
|
DeclareExchange(name string, opts ExchangeOptions) error
|
|
BindQueue(queue, exchange, routingKey string) error
|
|
DeleteQueue(name string) error
|
|
DeleteExchange(name string) error
|
|
HealthCheck() error
|
|
Close() error
|
|
}
|
|
|
|
type ConnectionManager interface {
|
|
GetConnection() (*amqp.Connection, error)
|
|
GetChannel() (*amqp.Channel, error)
|
|
ReturnChannel(*amqp.Channel)
|
|
Close() error
|
|
IsConnected() bool
|
|
NotifyConnectionLoss() <-chan *amqp.Error
|
|
}
|
|
|
|
type QueueOptions struct {
|
|
Durable bool
|
|
AutoDelete bool
|
|
Exclusive bool
|
|
NoWait bool
|
|
Args amqp.Table
|
|
}
|
|
|
|
type ExchangeOptions struct {
|
|
Type string
|
|
Durable bool
|
|
AutoDelete bool
|
|
Internal bool
|
|
NoWait bool
|
|
Args amqp.Table
|
|
}
|
|
|
|
type ConsumerOptions struct {
|
|
Queue string
|
|
ConsumerTag string
|
|
AutoAck bool
|
|
Exclusive bool
|
|
NoLocal bool
|
|
NoWait bool
|
|
PrefetchCount int
|
|
PrefetchSize int
|
|
Args amqp.Table
|
|
ReconnectWait time.Duration
|
|
}
|
|
|
|
type PublisherOptions struct {
|
|
ConfirmMode bool
|
|
Mandatory bool
|
|
Immediate bool
|
|
RetryAttempts int
|
|
RetryDelay time.Duration
|
|
ConfirmTimeout time.Duration
|
|
Args amqp.Table
|
|
}
|
|
|
|
const (
|
|
ExchangeTypeDirect = "direct"
|
|
ExchangeTypeFanout = "fanout"
|
|
ExchangeTypeTopic = "topic"
|
|
ExchangeTypeHeaders = "headers"
|
|
)
|
|
|
|
const (
|
|
DeliveryModeTransient = 1
|
|
DeliveryModePersistent = 2
|
|
)
|
|
|
|
const (
|
|
PriorityLowest = 0
|
|
PriorityLow = 64
|
|
PriorityNormal = 128
|
|
PriorityHigh = 192
|
|
PriorityHighest = 255
|
|
)
|