sqs-browse: new tool
Started working on a new tool to poll and browse an SQS queue. This is built using a TUI framework
This commit is contained in:
parent
e070505490
commit
5d1f4c78f4
11 changed files with 413 additions and 0 deletions
14
internal/sqs-browse/services/pollmessage/iface.go
Normal file
14
internal/sqs-browse/services/pollmessage/iface.go
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
package pollmessage
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/lmika/awstools/internal/sqs-browse/models"
|
||||
)
|
||||
|
||||
type MessageStore interface {
|
||||
Save(ctx context.Context, msg *models.Message) error
|
||||
}
|
||||
|
||||
type MessagePoller interface {
|
||||
PollForNewMessages(ctx context.Context, queue string) ([]*models.Message, error)
|
||||
}
|
||||
45
internal/sqs-browse/services/pollmessage/service.go
Normal file
45
internal/sqs-browse/services/pollmessage/service.go
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
package pollmessage
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/lmika/events"
|
||||
"github.com/pkg/errors"
|
||||
"log"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
store MessageStore
|
||||
poller MessagePoller
|
||||
queue string
|
||||
bus *events.Bus
|
||||
}
|
||||
|
||||
func NewService(store MessageStore, poller MessagePoller, queue string, bus *events.Bus) *Service {
|
||||
return &Service{
|
||||
store: store,
|
||||
poller: poller,
|
||||
queue: queue,
|
||||
bus: bus,
|
||||
}
|
||||
}
|
||||
|
||||
// Poll starts polling for new messages and adding them to the message store
|
||||
func (s *Service) Poll(ctx context.Context) error {
|
||||
for ctx.Err() == nil {
|
||||
log.Printf("polling for new messages: %v", s.queue)
|
||||
newMsgs, err := s.poller.PollForNewMessages(ctx, s.queue)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "unable to poll for messages")
|
||||
}
|
||||
|
||||
for _, msg := range newMsgs {
|
||||
if err := s.store.Save(ctx, msg); err != nil {
|
||||
log.Println("warn: unable to save new message %v", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
s.bus.Fire("new-messages", newMsgs)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue