Skip to content

Latest commit

 

History

History
67 lines (48 loc) · 2.06 KB

README.md

File metadata and controls

67 lines (48 loc) · 2.06 KB

GoDoc Build Status Go Report Card

PGQ consuming from Go

Small, user-friendly library for consuming PGQ.

Install

go get github.com/furdarius/pgqgo

Adding as dependency by "go dep"

$ dep ensure -add github.com/furdarius/pgqgo

Usage

Usage example:

// LogProcessor used to output received batch id, it's size and data.
// Implements pgqgo.BatchProcessor.
type LogProcessor struct{}

// Process consequentially output to stdout each events data from batch.
func (p *LogProcessor) Process(ctx context.Context, batchID int, events []pgqgo.Event) ([]pgqgo.RetryEvent, error) {
	log.Printf("batch received: batch_id = %d, size = %d\n", batchID, len(events))

	for _, event := range events {
		fmt.Println(event)
	}

	return nil, nil
}

func main() {
	db, _ := sql.Open("postgres", "postgres://postgres:[email protected]:5432/postgres?sslmode=disable")

	// Create consumer with batch processor.
	processor := &LogProcessor{}
	consumer := pgqgo.NewConsumer(db, processor, "consumer_name")

	queue := "queue_name"
	
	err = consumer.Register(ctx, queue)
	if err != nil && err != pgqgo.ErrAlreadyExists {
		log.Fatalf("failed to register pgq consumer: %v", err)
	}

	err = consumer.Start(ctx, queue)
	if err != nil && err != context.Canceled {
		log.Fatalf("failed to start pgq consumer: %v", err)
	}
}

More examples here