# simqsvr

SIMQ服务器。基于redis的消息队列，通过web接口提供对外服务。

## 安装

```shell
pip install simqsvr
```

## 接口列表

接口地址 | 接口名称 |
-- | -- |
/simq/api/{channel}/rpush | 添加消息（高优先级） |
/simq/api/{channel}/lpush | 添加消息（低优先级） |
~~/simq/api/{channel}/dpush~~ | ~~添加延迟消息~~ |
/simq/api/{channel}/pop | 获取消息执行 |
/simq/api/{channel}/ack | 确认消息执行完成 |
/simq/api/{channel}/ret | 退还消息 |
/simq/api/{channel}/query | 查询消息详情 |
/simq/api/{channel}/cancel | 取消消息（仅限待处理状态） |
~~/simq/api/{channel}/delete~~ | ~~删除消息~~ |

## 配置项

- SIMQ_MQ_DEFAULT: 默认为default，即django-redis标准添加的CACHES实例名称。
- SIMQ_MQS: 允许按channel使用不同caches实例。
- SIMQ_ACK_EVENT_EXPIRE: 消息处理完成通知过期时间。默认为10分钟。
- SIMQ_DONE_ITEM_EXPIRE: 已处理消息和结果的保存时间。默认为7天。
- SIMQ_APIKEYS: apikey认证密钥。不设置密钥则表示无需认证。
- SIMQ_APIKEY_HEADER: apikey认证请求头名称。默认为apikey。

## 简易使用方法

```shell
# 创建数据库
manage-simqsvr migrate
# 创建超级用户
manage-simqsvr createsuperuser

# 启动服务
manage-simqsvr runserver 0.0.0.0:80 --noreload
```

- 创建数据库&创建超级用户，只是用来登录swagger接口管理界面。
- 如果不需要使用swagger接口管理功能，可以忽略上述两个步骤。

## 注意事项

- simqsvr目前仅支持基于redis的消息队列。
- 必须要按django-redis标准来配置CACHES配置项。如：
    ```python
    # decode_responses=True是必须的
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379/0?decode_responses=True",
        }
    }
    ```

## 版本

### 0.1.0

- 版本首发。

### 0.1.3

- 完善容器打包支持。
- 修正swagger默认apikey认证header问题。
