# wmq-go **Repository Path**: tomdev/wmq-go ## Basic Information - **Project Name**: wmq-go - **Description**: Wrapped message queue which based on rabbitmq,support http protocol - **Primary Language**: Go - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 27 - **Created**: 2017-10-16 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WMQ [![stable](https://img.shields.io/badge/stable-stable-green.svg)](https://github.com/snail007/wmq/) [![license](https://img.shields.io/github/license/snail007/wmq.svg?style=plastic)]() [![download_count](https://img.shields.io/github/downloads/snail007/wmq/total.svg?style=plastic)](https://github.com/snail007/wmq/releases) [![download](https://img.shields.io/github/release/snail007/wmq.svg?style=plastic)](https://github.com/snail007/wmq/releases) Wrapped message queue which based on rabbitmq,support http protocol [![struct](/docs/images/struct.png)](https://github.com/snail007/wmq) # Requirement Linux are recommended,on windows the api "12.get or search last 100 lines log content" cannot be worked. # Notes You can find pre-complied binary here https://gitee.com/snail/wmq-go/releases or https://github.com/snail007/wmq/releases This is a web ui based console to manage wmq , https://github.com/phachon/wmq-admin Thx @phachon # Usage:
Usage of wmq:
--api-disable                  disable api service
--api-token string             access api token (default "guest")
--data-example                 print example of data-file
--data-file string             which file will store messages (default "message.json")
--fail-wait int                access consumer url  fail and then how many milliseconds 
                               to sleep (default 50000)
--ignore-headers stringSlice   these http headers will be ignored when access to consumer's url,
                               multiple splitted by comma(,)
--level string                 console log level,should be one of debug,info,warn,error 
                               (default "debug")
--listen-api string            api service listening port (default "0.0.0.0:3302")
--listen-publish string        publish service listening port (default "0.0.0.0:3303")
--log-access                   access log on or off (default true)
--log-dir string               the directory which store log files (default "log")
--log-level stringSlice        log to file level,multiple splitted by comma(,) 
                               (default [info,error,debug])
--log-max-count int            log file max count for rotate to remain (default 3)
--log-max-size int             log file max size(bytes) for rotate (default 102400000)
--mq-host string               which host be used when connect to RabbitMQ (default "127.0.0.1")
--mq-password string           which password be used when connect to RabbitMQ (default "guest")
--mq-port int                  which port be used when connect to RabbitMQ (default 5672)
--mq-prefix string             the queue and exchange default prefix (default "wmq.")
--mq-username string           which username be used when connect to RabbitMQ (default "guest")
--mq-vhost string              which vhost be used when connect to RabbitMQ (default "/")
--realip-header string         the publisher's real ip will be set in this http header when 
                                access to consumer's url (default "X-Forwarded-For")
--version                      show version about current WMQ
# Publishing Message
note:default publish port is 3303
1.publish a message 
    note:any "post body" and "get parameters" and "http header" was send to 
        "publishing" , them will be the same as when wmq access consumer's URL
    request:
        protocol:http
        method:get or post
        path:/:name?:query_string     //:name is the name of message ,
                                        :query_string is any query string you need
        header:
            Token:string        //message's Token , if not need token ,leave it empty
            RouteKey:string     //message's routing key , if not need token ,leave it empty
    response:
        httpcode:204|500      //204:menas success 500:means fail and output is error info
# Management
note:default manage port is 3302
1.add a message
    request:
        protocol:http
        method:get
        path:/message/add
        parameters:
            Name:string     //message name,must be unique
            Comment:string  //comment 
            Durable:1|0     //durable or not,1:true,0:false
            IsNeedToken:1|0 //need token or not when publish this kind message,1:true,0:false
            Mode:string     //should be one of fanout,topic,direct
            Token:string    //should be set when IsNeedToken is 1,other leave empty
            api-token:string//the api token is setting in config
            callback:string //callback function name for jsonp call,if no jsonp call ,leave it empty
    response:
        type:json
        column:
            code:1|0    //1 means success , 0 means fail
        example:
            no jsonp:{code:1,data:null} or {code:0,data:"some error"} 
            jsonp:callbackxxx({code:1,data:null}) or callbackxxx({code:0,data:"some error"}) 
2.update a message
    request:
        protocol:http
        method:get
        path:/message/update
        parameters:
            Name:string     //message name
            Comment:string  //comment 
            Durable:1|0     //durable or not,1:true,0:false
            IsNeedToken:1|0 //need token or not when publish this kind message,1:true,0:false
            Mode:string     //should be one of fanout,topic,direct
            Token:string    //should be set when IsNeedToken is 1,other leave empty
            api-token:string//the api token is setting in config
            callback:string //callback function name for jsonp call,if no jsonp call ,leave it empty
    response:
        type:json
        column:
            code:1|0    //1 means success , 0 means fail
        example:
            no jsonp:{code:1,data:null} or {code:0,data:"some error"} 
            jsonp:callbackxxx({code:1,data:null}) or callbackxxx({code:0,data:"some error"}) 
3.delete a message
    request:
        protocol:http
        method:get
        path:/message/delete
        parameters:
            Name:string     //message name
            api-token:string//the api token is setting in config
            callback:string //callback function name for jsonp call,if no jsonp call ,leave it empty
    response:
        type:json
        column:
            code:1|0    //1 means success , 0 means fail
        example:
            no jsonp:{code:1,data:null} or {code:0,data:"some error"} 
            jsonp:callbackxxx({code:1,data:null}) or callbackxxx({code:0,data:"some error"}) 
4.add a consumer
    request:
        protocol:http
        method:get
        path:/consumer/add
        parameters:
            Name:string     //message name
            URL:string      //URL of consume message
            Timeout:int     // milliseconds waiting for response when access url , usually : 3000
            Code:int        //http code,this code decide the url is accessed success or fail,
                              usually it is 200
            CheckCode:1|0   //whether to check response http code when access url,1:true,0:false
            Comment:string  //comment of consumer
            RouteKey:string //routing key
            Token:string    //should be set when IsNeedToken is 1,other leave empty
            api-token:string//the api token is setting in config
            callback:string //callback function name for jsonp call,if no jsonp call ,leave it empty
    response:
        type:json
        column:
            code:1|0    //1 means success , 0 means fail
        example:
            no jsonp:{code:1,data:null} or {code:0,data:"some error"} 
            jsonp:callbackxxx({code:1,data:null}) or callbackxxx({code:0,data:"some error"}) 
5.update a consumer
    request:
        protocol:http
        method:get
        path:/consumer/update
        parameters:
            Name:string     //message name
            ID:string       //ID of consumer
            URL:string      //URL of consume message
            Timeout:int     //milliseconds waiting for response when access url ,
                               usually : 3000
            Code:int        //http code,this code decide the url is accessed success or fail,
                              usually it is 200
            CheckCode:1|0   //whether to check response http code when access url,1:true,0:false
            Comment:string  //comment of consumer
            RouteKey:string //routing key
            Token:string    //should be set when IsNeedToken is 1,other leave empty
            api-token:string//the api token is setting in config
            callback:string //callback function name for jsonp call,
                              if no jsonp call ,leave it empty
    response:
        type:json
        column:
            code:1|0    //1 means success , 0 means fail
        example:
            no jsonp:{code:1,data:null} or {code:0,data:"some error"} 
            jsonp:callbackxxx({code:1,data:null}) or callbackxxx({code:0,data:"some error"})
6.delete a consumer
    request:
        protocol:http
        method:get
        path:/consumer/delete
        parameters:
            Name:string     //message name
            ID:string       //ID of consumer
            api-token:string//the api token is setting in config
            callback:string //callback function name for jsonp call,
                              if no jsonp call ,leave it empty
    response:
        type:json
        column:
            code:1|0    //1 means success , 0 means fail
        example:
            no jsonp:{code:1,data:null} or {code:0,data:"some error"} 
            jsonp:callbackxxx({code:1,data:null}) or callbackxxx({code:0,data:"some error"}
7.restart service
    request:
            protocol:http
            method:get
            path:/restart
            parameters:
                api-token:string    //the api token is setting in config
                callback:string     //callback function name for jsonp call,
                                      if no jsonp call ,leave it empty
    response:
            type:json
            column:
                code:1|0    //1 means success , 0 means fail
            example:
                no jsonp:{code:1,data:null} or {code:0,data:"some error"} 
                jsonp:callbackxxx({code:1,data:null}) or callbackxxx({code:0,data:"some error"})
8.reload service
    request:
            protocol:http
            method:get
            path:/reload
            parameters:
                api-token:string    //the api token is setting in config
                callback:string     //callback function name for jsonp call,
                                      if no jsonp call ,leave it empty
    response:
            type:json
            column:
                code:1|0    //1 means success , 0 means fail
            example:
                no jsonp:{code:1,data:null} or {code:0,data:"some error"} 
                jsonp:callbackxxx({code:1,data:null}) or callbackxxx({code:0,data:"some error"})
9.get messages config  
    request:
            protocol:http
            method:get
            path:/config
            parameters:
                api-token:string    //the api token is setting in config
                callback:string     //callback function name for jsonp call,
                                      if no jsonp call ,leave it empty
    response:
            type:json
            column:
                code:1|0    //1 means success , 0 means fail
            example:
                no jsonp:
                        {
                            "code": 1, 
                            "data": [{
                                        "Durable": false,
                                        "IsNeedToken": true,
                                        "Mode": "topic",
                                        "Name": "test",
                                        "Token": "JQJsUOqYzYZZgn8gUvs7sIinrJ0tDD8J"
                                        "Comment": "",
                                        "Consumers": [{
                                                "Comment": "",
                                                "ID": "111",
                                                "Code": 200,
                                                "CheckCode": true,
                                                "RouteKey": "#",
                                                "Timeout": 5000,
                                                "URL": "http://test.com/wmq.php"
                                            }
                                        ],
                                    }]
                        }
                 or {code:0,data:"some error"} 
                jsonp:callbackxxx({code:1,data:[...]}) or callbackxxx({code:0,data:"some error"})
10.get a consumer status
    request:
            protocol:http
            method:get
            path:/consumer/status
            parameters:
                Name:string         //message name
                ID:string           //consumer's ID
                api-token:string    //the api token is setting in config
                callback:string     //callback function name for jsonp call,
                                      if no jsonp call ,leave it empty
    response:
            type:json
            column:
                code:1|0    //1 means success , 0 means fail
            example:
                no jsonp:
                            {
                                "code": 1, 
                                "data": {
                                    "Count": 0, 
                                    "ID": "111", 
                                    "LastTime": "1496480916", 
                                    "MsgName": "test"
                                }
                            }
                 or {code:0,data:"some error"} 
                jsonp:callbackxxx({code:1,data:[...]}) or callbackxxx({code:0,data:"some error"})
11.get all consumer status of a message
    request:
            protocol:http
            method:get
            path:/message/status
            parameters:
                Name:string         //message name
                api-token:string    //the api token is setting in config
                callback:string     //callback function name for jsonp call,
                                      if no jsonp call ,leave it empty
    response:
            type:json
            column:
                code:1|0    //1 means success , 0 means fail
            example:
                no jsonp:
                            {
                                "code": 1, 
                                "data": [
                                    {
                                        "Count": 0, 
                                        "ID": "111", 
                                        "LastTime": "1496480916", 
                                        "MsgName": "test"
                                    }, 
                                    {
                                        "Count": 0, 
                                        "ID": "222", 
                                        "LastTime": "1496480916", 
                                        "MsgName": "test"
                                    }
                                ]
                            }
                 or {code:0,data:"some error"} 
                jsonp:callbackxxx({code:1,data:[...]}) or callbackxxx({code:0,data:"some error"})
12.get or search last 100 lines log content
    request:
            protocol:http
            method:get
            path:/log
            parameters:
                keyword:string           //keyword to search
                type:string             //should be one of: info,error,debug
                api-token:string        //the api token is setting in config
                callback:string         //callback function name for jsonp call,
                                            if no jsonp call ,leave it empty
    response:
            type:json
            column:
                code:1|0    //1 means success , 0 means fail
            example:
                no jsonp:
                            {
                                "code": 1, 
                                "data":"log content"
                            }
                 or {code:0,data:"some error"} 
                jsonp:callbackxxx({code:1,data:[...]}) or callbackxxx({code:0,data:"some error"})
13.get all log file names
    request:
            protocol:http
            method:get
            path:/log/list
            parameters:
                api-token:string        //the api token is setting in config
                callback:string         //callback function name for jsonp call,
                                            if no jsonp call ,leave it empty
    response:
            type:json
            column:
                code:1|0    //1 means success , 0 means fail
            example:
                no jsonp:{"code":1,"data":["error.log","info.log"]}
                 or {code:0,data:"some error"} 
                jsonp:callbackxxx({code:1,data:[...]}) or callbackxxx({code:0,data:"some error"})
14.download a log file
    request:
            protocol:http
            method:get
            path:/log/file
            parameters:
                file:string             //filename of log file,such as : info.log 、debug.tar.gz
                api-token:string       //the api token is setting in config
    response:
            your browser will tip download file