README
¶
WMQ
Wrapped message queue which based on rabbitmq,support http protocol
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
Documentation
¶
There is no documentation for this package.