Skip to content

maruware/sqsq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sqsq

Actions Status

Job Queue for Go based on SQS

Usage

worker

import (
    "github.com/maruware/sqsq"
    "github.com/aws/aws-sdk-go/aws"
)

func startWorker(queueName string) {
    config := aws.NewConfig()
    q, err := sqsq.New(config)

    err := q.UseQueue(queueName)
    jobChan := make(chan *sqsq.Job, 2)

    var concurrency int64 = 2
    var visibilityTimeout int64 = 5
    var waitTimeSeconds int64 = 20
    go q.WatchQueue(ctx, queueName, concurrency, visibilityTimeout, waitTimeSeconds, jobChan)

    for {
        select {
        case job := <-jobChan:
            go func () {
                defer job.Release()
                data := job.GetData()

                // do something

                job.Done()
            }()
        case <-ctx.Done():
            return
        }
    }
}

publisher

import (
    "github.com/maruware/sqsq"
    "github.com/aws/aws-sdk-go/aws"
)

func someProcess(queueName string) {
    config := aws.NewConfig()
    q, err := sqsq.New(config)

    // do something

    config := aws.NewConfig()
    q, err := sqsq.New(config)
    err := q.PutJob(queueName, "sample message", 0)
}

About

Job Queue for Go based on SQS

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors