HTTPSQS 队列客户端
基于HTTP协议的轻量级开源简单队列服务:
- HTTPSQS 说明:HTTPSQS@张宴
- Docker Hub:
docker pull save95/httpsqs:1.7.1
type IClient interface {
// Put 入队列(将文本消息放入队列)
// 返回:当前队列的读取位置点 pos,及可能存在的错误
// pos = -1 则表示队列已满,同时也会返回 err
Put(ctx context.Context, name, data string) (pos int64, err error)
// Get 出队列(从队列中取出文本消息)
// 返回 文本消息 data,当前队列的读取位置点 pos,及可能存在的错误
// pos = -1 则表示没有未取出的消息队列(HTTPSQS_GET_END)
Get(ctx context.Context, name string) (data string, pos int64, err error)
// Status 查看队列状态
Status(ctx context.Context, name string) (*Status, error)
// View 查看指定队列位置点的内容
// 跟一般的队列系统不同的是,HTTPSQS 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。
// 可以方便地观测进入队列的内容是否正确。另外,假设有一个发送手机短信的队列,由客户端守护进程从队列
// 中取出信息,并调用“短信网关接口”发送短信。但是,如果某段时间“短信网关接口”有故障,而这段时间队列
// 位置点300~900的信息已经出队列,但是发送短信失败,我们还可以在位置点300~900被覆盖前,查看到这些
// 位置点的内容,作相应的处理。
View(ctx context.Context, name string, pos int64) (string, error)
// Reset 重置指定队列
Reset(ctx context.Context, name string) error
// SetMaxQueue 更改指定队列的最大队列数量。默认的最大队列长度(100万条)
SetMaxQueue(ctx context.Context, name string, max int) error
// SetSyncTime 不停止服务的情况下,修改定时刷新内存缓冲区内容到磁盘的间隔时间
// 从HTTPSQS 1.3版本开始支持此功能。
// 默认间隔时间:5秒 或 httpsqs -s <second> 参数设置的值。
SetSyncTime(ctx context.Context, name string, duration time.Duration) error
}Download and install it:
go get github.com/gomooth/httpsqs
Import it in your code:
import "github.com/gomooth/httpsqs"
services:
httpsqs:
image: save95/httpsqs:1.7.1
ports:
- "1218:1218"
volumes:
- /etc/localtime:/etc/localtime
- ~/.local/databases/httpsqs:/opt/httpsqs/data
networks:
- local_netpackage main
import (
"context"
"encoding/json"
"fmt"
"github.com/gomooth/httpsqs"
)
func main() {
client := httpsqs.NewClient(&httpsqs.Config{
Addr: "127.0.0.1:1218",
Timeout: 0,
Password: "",
})
name := "queue_test"
ctx := context.Background()
bs, _ := json.Marshal(struct {
Name string
Title string
Age int
Money int
}{
"张三", "无产阶级", 30, 10000,
})
pos, err := client.Put(ctx, name, string(bs))
fmt.Println(pos, err)
}