func (c *Client) Enqueue(ctx context.Context, j *Job) error {
	return c.execEnqueue(ctx, j, c.pool)
}
Enqueue adds a job to the queue.
package gue
import (
	"context"
	"crypto/md5"
	"encoding/hex"
	"encoding/json"
	"errors"
	"fmt"
	"time"
	"github.com/vgarvardt/gue/v3/adapter"
	"github.com/vgarvardt/gue/v3/adapter/exponential"
)
var ErrMissingType = errors.New("job type must be specified")
type Client struct {
	pool    adapter.ConnPool
	logger  adapter.Logger
	id      string
	backoff Backoff
}
func NewClient(pool adapter.ConnPool, options ...ClientOption) *Client {
	instance := Client{
		pool:    pool,
		logger:  adapter.NoOpLogger{},
		backoff: exponential.Default,
	}
	for _, option := range options {
		option(&instance)
	}
	if instance.id == "" {
		instance.id = newID()
	}
	instance.logger = instance.logger.With(adapter.F("client-id", instance.id))
	return &instance
}