package brokerdriver

import (
	"query-service/internal/adapters/brokeradapter"

	"github.com/streadway/amqp"
)

// Broker models a message broker
type Broker interface {
	CreateConsumer() Consumer
	CreateProducer() Producer
}

// A Consumer belongs to a broker and consumes messages from a queue
type Consumer interface {
	ConsumeMessages()
	SetMessageHandler(handler func(msg *brokeradapter.Message))
}

// A Producer belongs to a broker and publishes messages to a queue
type Producer interface {
	PublishMessage(body *[]byte, routingKey *string, headers *amqp.Table)
}