A simple queue service using Redis as the backend. All you have to do is point your code to https://redisq.zkillboard.com/listen.php. Then parse the JSON that you receive and do anything you like with it.
If no killmail has come in for 10 seconds, you'll receive a null package, example: {"package":null}
The server will remember your queueID for up to 3 hours, therefore, pauses in your code will not cause you to miss out on killmails.
You don't need Redis to use this service, its only called RedisQ because the service itself is powered by Redis.
RedisQ will use the parameter queueID to identify you. This field is required! Example:
https://redisq.zkillboard.com/listen.php?queueID=Voltron9000
By default, RedisQ will wait up to 10 seconds for a new killmail to come in. To wait less than this 10 seconds, you can use the ttw parameter, which is short for timeToWait. Example:
https://redisq.zkillboard.com/listen.php?ttw=1
And yes, you can combine the ttw and queueID parameters. The code will enforce a minimum of 1 and a maximum of 10 seconds.
It really is very, very simple. All you have to do is point something at https://redisq.zkillboard.com/listen.php, that can be curl, file_get_contents, wget, etc. etc. Here's an example of getting a killmail with PHP
$raw = file_get_contents("https://redisq.zkillboard.com/listen.php?queueID=YourIdHere");
$json = json_decode($raw, true);
$killmail = $json['package'];
That's it, really. You now have a killmail. Put that into a loop and you can keep feeding yourself all the killmails as zKillboard gets them.
Yes, RedisQ identifies you based on your queueID and will remember you for up to 3 hours. So you can setup cron jobs to run every minute, 5 minutes, 15 minutes, etc. and not worry about missing any of the killmails.
No, there isn't a rate limit. By nature, if there isn't a killmail to give to you, RedisQ will make you wait up to 10 seconds before returning a null package to you. If there is a large amount of killmails to give to you, feel free to hit RedisQ as fast as you like and it'll return the killmails to you as quickly as you can retrieve them.
(This sections is currently deprecated, perhaps only temporarily)
Only one connection at a time is allowed. If you try for more the extra connections will receive a http 429 error. Too many 429 errors will cause your IP and userid (if provided) to be temporarily banned for several hours.
Not at this time. I went with stupidly simple simplicity when I made this and didn't bother with any code for filters and/or subscriptions. You can easily write the code on your end to filter the killmails to your preferences.
Websockets are great, sure, but I wanted to write something that was damn easy to implement in any language. RedisQ isn't trying to be fancy like websockets, it is only trying to disemminate killmails in a quick and very simple fashion.
If you really want to use websockets use zkill's websocket service. Documentation can be found here: https://github.com/zKillboard/zKillboard/wiki/Websocket
Because I used Redis to implement what I was trying to do, it's a queue type service, and so I went with the completely unoriginal name RedisQ.
The initial version of RedisQ utilized PHP as the backend language of choice. However, a subsequent rewrite is now using NodeJS. To keep things simple and allow for great backwards compatibility the endpoints kept their .php extension.