-
thijsheijden authoredthijsheijden authored
consume.go 1.27 KiB
package consume
import (
"query-service/internal/usecases/databaseinfo"
"query-service/internal/usecases/produce"
"query-service/internal/usecases/request"
"git.science.uu.nl/datastrophe/broker"
"git.science.uu.nl/datastrophe/query-conversion"
)
// Service wraps consumer methods
// broker is Alice broker created in brockerdriver driver
type Service struct {
brokerDriver broker.Interface
producer produce.UseCase
queryConverter query.Converter
requestSender request.UseCase
databaseInfoService databaseinfo.UseCase
}
// NewService creates a new service
func NewService(broker broker.Interface, produceService produce.UseCase, queryConverter query.Converter, requestSenderService request.UseCase, databaseInfoService databaseinfo.UseCase) *Service {
return &Service{
brokerDriver: broker,
producer: produceService,
queryConverter: queryConverter,
requestSender: requestSenderService,
databaseInfoService: databaseInfoService,
}
}
// Start starts consuming
func (s *Service) Start() {
// Create consumer
consumer := s.brokerDriver.CreateConsumer("requests-exchange", "aql-query-queue", "aql-query-request")
consumer.SetMessageHandler(s.HandleMessage)
// Start consuming messages
consumer.ConsumeMessages()
}