Refactor RedisQueue into Java with additional minor updates

Some logging items were previously missed and the status code 429 as a
retryable error has been added in this commit
This commit is contained in:
R. Tyler Croy 2015-04-06 10:06:47 -07:00
parent 2d137d80c1
commit a97996c885
31 changed files with 1005 additions and 165 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@ whoas.iml
*.sw* *.sw*
.gradle/ .gradle/
.classpath .classpath
/bin/

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>All Classes (whoas 0.3.0 API)</title> <title>All Classes (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script> <script type="text/javascript" src="script.js"></script>
</head> </head>
@ -18,6 +18,8 @@
<li><a href="com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas" target="classFrame">InMemoryQueue</a></li> <li><a href="com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas" target="classFrame">InMemoryQueue</a></li>
<li><a href="com/github/lookout/whoas/Publisher.html" title="class in com.github.lookout.whoas" target="classFrame">Publisher</a></li> <li><a href="com/github/lookout/whoas/Publisher.html" title="class in com.github.lookout.whoas" target="classFrame">Publisher</a></li>
<li><a href="com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">QueueAction</span></a></li> <li><a href="com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">QueueAction</span></a></li>
<li><a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas" target="classFrame">RedisQueue</a></li>
<li><a href="com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">RedisQueueAction</span></a></li>
<li><a href="com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas" target="classFrame">SequentialHookRunner</a></li> <li><a href="com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas" target="classFrame">SequentialHookRunner</a></li>
<li><a href="com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">WhoasConfiguration</span></a></li> <li><a href="com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">WhoasConfiguration</span></a></li>
<li><a href="com/github/lookout/whoas/WhoasFactory.html" title="class in com.github.lookout.whoas" target="classFrame">WhoasFactory</a></li> <li><a href="com/github/lookout/whoas/WhoasFactory.html" title="class in com.github.lookout.whoas" target="classFrame">WhoasFactory</a></li>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>All Classes (whoas 0.3.0 API)</title> <title>All Classes (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script> <script type="text/javascript" src="script.js"></script>
</head> </head>
@ -18,6 +18,8 @@
<li><a href="com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas">InMemoryQueue</a></li> <li><a href="com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas">InMemoryQueue</a></li>
<li><a href="com/github/lookout/whoas/Publisher.html" title="class in com.github.lookout.whoas">Publisher</a></li> <li><a href="com/github/lookout/whoas/Publisher.html" title="class in com.github.lookout.whoas">Publisher</a></li>
<li><a href="com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="interfaceName">QueueAction</span></a></li> <li><a href="com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="interfaceName">QueueAction</span></a></li>
<li><a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></li>
<li><a href="com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas"><span class="interfaceName">RedisQueueAction</span></a></li>
<li><a href="com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas">SequentialHookRunner</a></li> <li><a href="com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas">SequentialHookRunner</a></li>
<li><a href="com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="interfaceName">WhoasConfiguration</span></a></li> <li><a href="com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="interfaceName">WhoasConfiguration</span></a></li>
<li><a href="com/github/lookout/whoas/WhoasFactory.html" title="class in com.github.lookout.whoas">WhoasFactory</a></li> <li><a href="com/github/lookout/whoas/WhoasFactory.html" title="class in com.github.lookout.whoas">WhoasFactory</a></li>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>AbstractHookQueue (whoas 0.3.0 API)</title> <title>AbstractHookQueue (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>
@ -107,7 +107,7 @@ var activeTableTab = "activeTableTab";
<li class="blockList"> <li class="blockList">
<dl> <dl>
<dt>Direct Known Subclasses:</dt> <dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas">InMemoryQueue</a></dd> <dd><a href="../../../../com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas">InMemoryQueue</a>, <a href="../../../../com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dd>
</dl> </dl>
<hr> <hr>
<br> <br>
@ -270,10 +270,13 @@ extends java.lang.Object</pre>
<ul class="blockList"> <ul class="blockList">
<li class="blockList"> <li class="blockList">
<h4>getSize</h4> <h4>getSize</h4>
<pre>public abstract&nbsp;int&nbsp;getSize()</pre> <pre>public abstract&nbsp;int&nbsp;getSize()
throws java.lang.Exception</pre>
<dl> <dl>
<dt><span class="returnLabel">Returns:</span></dt> <dt><span class="returnLabel">Returns:</span></dt>
<dd>Size of the queue, if not implemented by the provider, returns -1</dd> <dd>Size of the queue, if not implemented by the provider, returns -1</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - implementors may throw Exceptions</dd>
</dl> </dl>
</li> </li>
</ul> </ul>
@ -299,12 +302,15 @@ extends java.lang.Object</pre>
<ul class="blockListLast"> <ul class="blockListLast">
<li class="blockList"> <li class="blockList">
<h4>push</h4> <h4>push</h4>
<pre>public abstract&nbsp;java.lang.Boolean&nbsp;push(<a href="../../../../com/github/lookout/whoas/HookRequest.html" title="class in com.github.lookout.whoas">HookRequest</a>&nbsp;request)</pre> <pre>public abstract&nbsp;java.lang.Boolean&nbsp;push(<a href="../../../../com/github/lookout/whoas/HookRequest.html" title="class in com.github.lookout.whoas">HookRequest</a>&nbsp;request)
throws java.lang.Exception</pre>
<dl> <dl>
<dt><span class="paramLabel">Parameters:</span></dt> <dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - A valid <code>HookRequest</code></dd> <dd><code>request</code> - A valid <code>HookRequest</code></dd>
<dt><span class="returnLabel">Returns:</span></dt> <dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the <code>HookRequest</code> was successfully added to the queue</dd> <dd>true if the <code>HookRequest</code> was successfully added to the queue</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - implementors may throw Exceptions</dd>
</dl> </dl>
</li> </li>
</ul> </ul>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>AbstractHookRunner (whoas 0.3.0 API)</title> <title>AbstractHookRunner (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>HookRequest (whoas 0.3.0 API)</title> <title>HookRequest (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>InMemoryQueue (whoas 0.3.0 API)</title> <title>InMemoryQueue (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>Publisher (whoas 0.3.0 API)</title> <title>Publisher (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>QueueAction (whoas 0.3.0 API)</title> <title>QueueAction (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>
@ -48,7 +48,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav"> <div class="subNav">
<ul class="navList"> <ul class="navList">
<li><a href="../../../../com/github/lookout/whoas/Publisher.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li> <li><a href="../../../../com/github/lookout/whoas/Publisher.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li> <li><a href="../../../../com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul> </ul>
<ul class="navList"> <ul class="navList">
<li><a href="../../../../index.html?com/github/lookout/whoas/QueueAction.html" target="_top">Frames</a></li> <li><a href="../../../../index.html?com/github/lookout/whoas/QueueAction.html" target="_top">Frames</a></li>
@ -178,7 +178,7 @@ var activeTableTab = "activeTableTab";
<div class="subNav"> <div class="subNav">
<ul class="navList"> <ul class="navList">
<li><a href="../../../../com/github/lookout/whoas/Publisher.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li> <li><a href="../../../../com/github/lookout/whoas/Publisher.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li> <li><a href="../../../../com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul> </ul>
<ul class="navList"> <ul class="navList">
<li><a href="../../../../index.html?com/github/lookout/whoas/QueueAction.html" target="_top">Frames</a></li> <li><a href="../../../../index.html?com/github/lookout/whoas/QueueAction.html" target="_top">Frames</a></li>

View File

@ -0,0 +1,475 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>RedisQueue (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="RedisQueue (whoas 0.3.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../com/github/lookout/whoas/package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/github/lookout/whoas/RedisQueue.html" target="_top">Frames</a></li>
<li><a href="RedisQueue.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.com.github.lookout.whoas.AbstractHookQueue">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.github.lookout.whoas</div>
<h2 title="Class RedisQueue" class="title">Class RedisQueue</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">com.github.lookout.whoas.AbstractHookQueue</a></li>
<li>
<ul class="inheritance">
<li>com.github.lookout.whoas.RedisQueue</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">RedisQueue</span>
extends <a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></pre>
<div class="block">A redis queue that offers distributed and persistent queue</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.com.github.lookout.whoas.AbstractHookQueue">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></h3>
<code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html#started">started</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#RedisQueue--">RedisQueue</a></span>()</code>
<div class="block">Default constructor</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#RedisQueue-redis.clients.jedis.JedisPool-">RedisQueue</a></span>(redis.clients.jedis.JedisPool&nbsp;pool)</code>
<div class="block">Allow users to provide their own <code>JedisPool</code> instance</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#RedisQueue-com.github.lookout.whoas.WhoasQueueConfig-">RedisQueue</a></span>(<a href="../../../../com/github/lookout/whoas/WhoasQueueConfig.html" title="class in com.github.lookout.whoas">WhoasQueueConfig</a>&nbsp;queueConfig)</code>
<div class="block">Create the RedisQueue with valid config</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#getSize--">getSize</a></span>()</code>
<div class="block">Return the number of elements in the queue</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#pop-com.github.lookout.whoas.QueueAction-">pop</a></span>(<a href="../../../../com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas">QueueAction</a>&nbsp;action)</code>
<div class="block">Performs a blocking pop on the queue and invokes the closure with the
item popped from the queue
If the Closure throws an exception, the dequeued item will be returned
to the tail end of the queue</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.lang.Boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#push-com.github.lookout.whoas.HookRequest-">push</a></span>(<a href="../../../../com/github/lookout/whoas/HookRequest.html" title="class in com.github.lookout.whoas">HookRequest</a>&nbsp;request)</code>
<div class="block">Attempt to insert the request into the queue
If the request cannot be inserted, this method will return false,
otherwise true.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#start--">start</a></span>()</code>
<div class="block">Setup the Redis client</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#stop--">stop</a></span>()</code>
<div class="block">Stop the Redis client</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected java.lang.Object</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueue.html#withRedis-com.github.lookout.whoas.RedisQueueAction-">withRedis</a></span>(<a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas">RedisQueueAction</a>&nbsp;action)</code>
<div class="block">Allocate redis client from the pool</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="RedisQueue-com.github.lookout.whoas.WhoasQueueConfig-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RedisQueue</h4>
<pre>public&nbsp;RedisQueue(<a href="../../../../com/github/lookout/whoas/WhoasQueueConfig.html" title="class in com.github.lookout.whoas">WhoasQueueConfig</a>&nbsp;queueConfig)</pre>
<div class="block">Create the RedisQueue with valid config</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>queueConfig</code> - necessary configuration to connect to Redis</dd>
</dl>
</li>
</ul>
<a name="RedisQueue--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RedisQueue</h4>
<pre>public&nbsp;RedisQueue()</pre>
<div class="block">Default constructor</div>
</li>
</ul>
<a name="RedisQueue-redis.clients.jedis.JedisPool-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>RedisQueue</h4>
<pre>public&nbsp;RedisQueue(redis.clients.jedis.JedisPool&nbsp;pool)</pre>
<div class="block">Allow users to provide their own <code>JedisPool</code> instance</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pool</code> - an already set up pool</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getSize--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSize</h4>
<pre>public&nbsp;int&nbsp;getSize()
throws java.lang.Exception</pre>
<div class="block">Return the number of elements in the queue</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html#getSize--">getSize</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Size of the queue, if not implemented by the provider, returns -1</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - implementors may throw Exceptions</dd>
</dl>
</li>
</ul>
<a name="start--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>start</h4>
<pre>public&nbsp;void&nbsp;start()</pre>
<div class="block">Setup the Redis client</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html#start--">start</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></code></dd>
</dl>
</li>
</ul>
<a name="stop--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>stop</h4>
<pre>public&nbsp;void&nbsp;stop()</pre>
<div class="block">Stop the Redis client</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html#stop--">stop</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></code></dd>
</dl>
</li>
</ul>
<a name="pop-com.github.lookout.whoas.QueueAction-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pop</h4>
<pre>public&nbsp;void&nbsp;pop(<a href="../../../../com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas">QueueAction</a>&nbsp;action)
throws java.lang.Exception</pre>
<div class="block">Performs a blocking pop on the queue and invokes the closure with the
item popped from the queue
If the Closure throws an exception, the dequeued item will be returned
to the tail end of the queue</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html#pop-com.github.lookout.whoas.QueueAction-">pop</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>action</code> - a <code>QueueAction</code> to invoke</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - the underlying <code>QueueAction</code> may throw any form of exception</dd>
</dl>
</li>
</ul>
<a name="push-com.github.lookout.whoas.HookRequest-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>push</h4>
<pre>public&nbsp;java.lang.Boolean&nbsp;push(<a href="../../../../com/github/lookout/whoas/HookRequest.html" title="class in com.github.lookout.whoas">HookRequest</a>&nbsp;request)
throws com.fasterxml.jackson.core.JsonProcessingException,
java.lang.Exception</pre>
<div class="block">Attempt to insert the request into the queue
If the request cannot be inserted, this method will return false,
otherwise true.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html#push-com.github.lookout.whoas.HookRequest-">push</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - A <code>HookRequest</code> to enqueue</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the <code>HookRequest</code> was successfully added to the queue</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - implementors may throw Exceptions</dd>
<dd><code>com.fasterxml.jackson.core.JsonProcessingException</code></dd>
</dl>
</li>
</ul>
<a name="withRedis-com.github.lookout.whoas.RedisQueueAction-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>withRedis</h4>
<pre>protected&nbsp;java.lang.Object&nbsp;withRedis(<a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas">RedisQueueAction</a>&nbsp;action)
throws java.lang.Exception</pre>
<div class="block">Allocate redis client from the pool</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>action</code> - callback to invoke with a <code>Jedis</code> object from the
pool</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>propogates a generic <code>Object</code> up from the <code>RedisQueueAction</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - propogates underlying Jedis exceptions</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../com/github/lookout/whoas/package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/github/lookout/whoas/RedisQueue.html" target="_top">Frames</a></li>
<li><a href="RedisQueue.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.com.github.lookout.whoas.AbstractHookQueue">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@ -0,0 +1,222 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>RedisQueueAction (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="RedisQueueAction (whoas 0.3.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../com/github/lookout/whoas/package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/github/lookout/whoas/RedisQueueAction.html" target="_top">Frames</a></li>
<li><a href="RedisQueueAction.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.github.lookout.whoas</div>
<h2 title="Interface RedisQueueAction" class="title">Interface RedisQueueAction&lt;T&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public interface <span class="typeNameLabel">RedisQueueAction&lt;T&gt;</span></pre>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="type parameter in RedisQueueAction">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/github/lookout/whoas/RedisQueueAction.html#call-redis.clients.jedis.Jedis-">call</a></span>(redis.clients.jedis.Jedis&nbsp;jedis)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="call-redis.clients.jedis.Jedis-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>call</h4>
<pre><a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="type parameter in RedisQueueAction">T</a>&nbsp;call(redis.clients.jedis.Jedis&nbsp;jedis)
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../com/github/lookout/whoas/package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/github/lookout/whoas/RedisQueueAction.html" target="_top">Frames</a></li>
<li><a href="RedisQueueAction.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>SequentialHookRunner (whoas 0.3.0 API)</title> <title>SequentialHookRunner (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>
@ -47,7 +47,7 @@ var activeTableTab = "activeTableTab";
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <ul class="navList">
<li><a href="../../../../com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li> <li><a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li> <li><a href="../../../../com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul> </ul>
<ul class="navList"> <ul class="navList">
@ -278,7 +278,7 @@ extends <a href="../../../../com/github/lookout/whoas/AbstractHookRunner.html" t
</div> </div>
<div class="subNav"> <div class="subNav">
<ul class="navList"> <ul class="navList">
<li><a href="../../../../com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li> <li><a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li> <li><a href="../../../../com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul> </ul>
<ul class="navList"> <ul class="navList">

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>WhoasConfiguration (whoas 0.3.0 API)</title> <title>WhoasConfiguration (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>WhoasFactory (whoas 0.3.0 API)</title> <title>WhoasFactory (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>WhoasQueueConfig (whoas 0.3.0 API)</title> <title>WhoasQueueConfig (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>com.github.lookout.whoas (whoas 0.3.0 API)</title> <title>com.github.lookout.whoas (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>
@ -14,6 +14,7 @@
<h2 title="Interfaces">Interfaces</h2> <h2 title="Interfaces">Interfaces</h2>
<ul title="Interfaces"> <ul title="Interfaces">
<li><a href="QueueAction.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">QueueAction</span></a></li> <li><a href="QueueAction.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">QueueAction</span></a></li>
<li><a href="RedisQueueAction.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">RedisQueueAction</span></a></li>
<li><a href="WhoasConfiguration.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">WhoasConfiguration</span></a></li> <li><a href="WhoasConfiguration.html" title="interface in com.github.lookout.whoas" target="classFrame"><span class="interfaceName">WhoasConfiguration</span></a></li>
</ul> </ul>
<h2 title="Classes">Classes</h2> <h2 title="Classes">Classes</h2>
@ -23,6 +24,7 @@
<li><a href="HookRequest.html" title="class in com.github.lookout.whoas" target="classFrame">HookRequest</a></li> <li><a href="HookRequest.html" title="class in com.github.lookout.whoas" target="classFrame">HookRequest</a></li>
<li><a href="InMemoryQueue.html" title="class in com.github.lookout.whoas" target="classFrame">InMemoryQueue</a></li> <li><a href="InMemoryQueue.html" title="class in com.github.lookout.whoas" target="classFrame">InMemoryQueue</a></li>
<li><a href="Publisher.html" title="class in com.github.lookout.whoas" target="classFrame">Publisher</a></li> <li><a href="Publisher.html" title="class in com.github.lookout.whoas" target="classFrame">Publisher</a></li>
<li><a href="RedisQueue.html" title="class in com.github.lookout.whoas" target="classFrame">RedisQueue</a></li>
<li><a href="SequentialHookRunner.html" title="class in com.github.lookout.whoas" target="classFrame">SequentialHookRunner</a></li> <li><a href="SequentialHookRunner.html" title="class in com.github.lookout.whoas" target="classFrame">SequentialHookRunner</a></li>
<li><a href="WhoasFactory.html" title="class in com.github.lookout.whoas" target="classFrame">WhoasFactory</a></li> <li><a href="WhoasFactory.html" title="class in com.github.lookout.whoas" target="classFrame">WhoasFactory</a></li>
<li><a href="WhoasQueueConfig.html" title="class in com.github.lookout.whoas" target="classFrame">WhoasQueueConfig</a></li> <li><a href="WhoasQueueConfig.html" title="class in com.github.lookout.whoas" target="classFrame">WhoasQueueConfig</a></li>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>com.github.lookout.whoas (whoas 0.3.0 API)</title> <title>com.github.lookout.whoas (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>
@ -85,6 +85,10 @@
<td class="colLast">&nbsp;</td> <td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas">RedisQueueAction</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas">WhoasConfiguration</a>&lt;T extends io.dropwizard.Configuration&gt;</td> <td class="colFirst"><a href="../../../../com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas">WhoasConfiguration</a>&lt;T extends io.dropwizard.Configuration&gt;</td>
<td class="colLast"> <td class="colLast">
<div class="block">The interface to create the whoas factory based on configuration <div class="block">The interface to create the whoas factory based on configuration
@ -132,13 +136,19 @@
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<td class="colFirst"><a href="../../../../com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></td>
<td class="colLast">
<div class="block">A redis queue that offers distributed and persistent queue</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas">SequentialHookRunner</a></td> <td class="colFirst"><a href="../../../../com/github/lookout/whoas/SequentialHookRunner.html" title="class in com.github.lookout.whoas">SequentialHookRunner</a></td>
<td class="colLast"> <td class="colLast">
<div class="block">The SequentialHookRunner is will dequeue HookRequest items from the <div class="block">The SequentialHookRunner is will dequeue HookRequest items from the
configured AbstractHookQueue and publish those webhooks sequentially.</div> configured AbstractHookQueue and publish those webhooks sequentially.</div>
</td> </td>
</tr> </tr>
<tr class="altColor"> <tr class="rowColor">
<td class="colFirst"><a href="../../../../com/github/lookout/whoas/WhoasFactory.html" title="class in com.github.lookout.whoas">WhoasFactory</a></td> <td class="colFirst"><a href="../../../../com/github/lookout/whoas/WhoasFactory.html" title="class in com.github.lookout.whoas">WhoasFactory</a></td>
<td class="colLast"> <td class="colLast">
<div class="block">This factory will allow clients of whoas to build <div class="block">This factory will allow clients of whoas to build
@ -146,7 +156,7 @@
like sequential.</div> like sequential.</div>
</td> </td>
</tr> </tr>
<tr class="rowColor"> <tr class="altColor">
<td class="colFirst"><a href="../../../../com/github/lookout/whoas/WhoasQueueConfig.html" title="class in com.github.lookout.whoas">WhoasQueueConfig</a></td> <td class="colFirst"><a href="../../../../com/github/lookout/whoas/WhoasQueueConfig.html" title="class in com.github.lookout.whoas">WhoasQueueConfig</a></td>
<td class="colLast"> <td class="colLast">
<div class="block">Whoas Queue Configuration</div> <div class="block">Whoas Queue Configuration</div>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>com.github.lookout.whoas Class Hierarchy (whoas 0.3.0 API)</title> <title>com.github.lookout.whoas Class Hierarchy (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script> <script type="text/javascript" src="../../../../script.js"></script>
</head> </head>
@ -78,6 +78,7 @@
<li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">AbstractHookQueue</span></a> <li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">AbstractHookQueue</span></a>
<ul> <ul>
<li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">InMemoryQueue</span></a></li> <li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">InMemoryQueue</span></a></li>
<li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">RedisQueue</span></a></li>
</ul> </ul>
</li> </li>
<li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/AbstractHookRunner.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">AbstractHookRunner</span></a> <li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/AbstractHookRunner.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">AbstractHookRunner</span></a>
@ -95,6 +96,7 @@
<h2 title="Interface Hierarchy">Interface Hierarchy</h2> <h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul> <ul>
<li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">QueueAction</span></a></li> <li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">QueueAction</span></a></li>
<li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">RedisQueueAction</span></a>&lt;T&gt;</li>
<li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">WhoasConfiguration</span></a>&lt;T&gt;</li> <li type="circle">com.github.lookout.whoas.<a href="../../../../com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">WhoasConfiguration</span></a>&lt;T&gt;</li>
</ul> </ul>
</div> </div>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>Constant Field Values (whoas 0.3.0 API)</title> <title>Constant Field Values (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script> <script type="text/javascript" src="script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>Deprecated List (whoas 0.3.0 API)</title> <title>Deprecated List (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script> <script type="text/javascript" src="script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>API Help (whoas 0.3.0 API)</title> <title>API Help (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script> <script type="text/javascript" src="script.js"></script>
</head> </head>

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>Index (whoas 0.3.0 API)</title> <title>Index (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script> <script type="text/javascript" src="script.js"></script>
</head> </head>
@ -108,6 +108,8 @@
<dl> <dl>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/QueueAction.html#call-com.github.lookout.whoas.HookRequest-">call(HookRequest)</a></span> - Method in interface com.github.lookout.whoas.<a href="com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas">QueueAction</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/QueueAction.html#call-com.github.lookout.whoas.HookRequest-">call(HookRequest)</a></span> - Method in interface com.github.lookout.whoas.<a href="com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas">QueueAction</a></dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueueAction.html#call-redis.clients.jedis.Jedis-">call(Jedis)</a></span> - Method in interface com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas">RedisQueueAction</a></dt>
<dd>&nbsp;</dd>
<dt><a href="com/github/lookout/whoas/package-summary.html">com.github.lookout.whoas</a> - package com.github.lookout.whoas</dt> <dt><a href="com/github/lookout/whoas/package-summary.html">com.github.lookout.whoas</a> - package com.github.lookout.whoas</dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/HookRequest.html#contentType">contentType</a></span> - Variable in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/HookRequest.html" title="class in com.github.lookout.whoas">HookRequest</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/HookRequest.html#contentType">contentType</a></span> - Variable in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/HookRequest.html" title="class in com.github.lookout.whoas">HookRequest</a></dt>
@ -134,6 +136,10 @@
<dd> <dd>
<div class="block">Return the number of elements in the queue</div> <div class="block">Return the number of elements in the queue</div>
</dd> </dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#getSize--">getSize()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Return the number of elements in the queue</div>
</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/WhoasConfiguration.html#getWhoasFactory-T-">getWhoasFactory(T)</a></span> - Method in interface com.github.lookout.whoas.<a href="com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas">WhoasConfiguration</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/WhoasConfiguration.html#getWhoasFactory-T-">getWhoasFactory(T)</a></span> - Method in interface com.github.lookout.whoas.<a href="com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas">WhoasConfiguration</a></dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
</dl> </dl>
@ -219,6 +225,14 @@
If the Closure throws an exception, the dequeued item will be returned If the Closure throws an exception, the dequeued item will be returned
to the tail end of the queue</div> to the tail end of the queue</div>
</dd> </dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#pop-com.github.lookout.whoas.QueueAction-">pop(QueueAction)</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Performs a blocking pop on the queue and invokes the closure with the
item popped from the queue
If the Closure throws an exception, the dequeued item will be returned
to the tail end of the queue</div>
</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/WhoasQueueConfig.html#port">port</a></span> - Variable in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/WhoasQueueConfig.html" title="class in com.github.lookout.whoas">WhoasQueueConfig</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/WhoasQueueConfig.html#port">port</a></span> - Variable in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/WhoasQueueConfig.html" title="class in com.github.lookout.whoas">WhoasQueueConfig</a></dt>
<dd> <dd>
<div class="block">Port number of the distributed queue server <div class="block">Port number of the distributed queue server
@ -250,6 +264,13 @@
If the request cannot be inserted, this method will return false, If the request cannot be inserted, this method will return false,
otherwise true.</div> otherwise true.</div>
</dd> </dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#push-com.github.lookout.whoas.HookRequest-">push(HookRequest)</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Attempt to insert the request into the queue
If the request cannot be inserted, this method will return false,
otherwise true.</div>
</dd>
</dl> </dl>
<a name="I:Q"> <a name="I:Q">
<!-- --> <!-- -->
@ -270,6 +291,24 @@
</a> </a>
<h2 class="title">R</h2> <h2 class="title">R</h2>
<dl> <dl>
<dt><a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">RedisQueue</span></a> - Class in <a href="com/github/lookout/whoas/package-summary.html">com.github.lookout.whoas</a></dt>
<dd>
<div class="block">A redis queue that offers distributed and persistent queue</div>
</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#RedisQueue-com.github.lookout.whoas.WhoasQueueConfig-">RedisQueue(WhoasQueueConfig)</a></span> - Constructor for class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Create the RedisQueue with valid config</div>
</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#RedisQueue--">RedisQueue()</a></span> - Constructor for class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Default constructor</div>
</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#RedisQueue-redis.clients.jedis.JedisPool-">RedisQueue(JedisPool)</a></span> - Constructor for class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Allow users to provide their own <code>JedisPool</code> instance</div>
</dd>
<dt><a href="com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">RedisQueueAction</span></a>&lt;<a href="com/github/lookout/whoas/RedisQueueAction.html" title="type parameter in RedisQueueAction">T</a>&gt; - Interface in <a href="com/github/lookout/whoas/package-summary.html">com.github.lookout.whoas</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/HookRequest.html#retries">retries</a></span> - Variable in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/HookRequest.html" title="class in com.github.lookout.whoas">HookRequest</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/HookRequest.html#retries">retries</a></span> - Variable in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/HookRequest.html" title="class in com.github.lookout.whoas">HookRequest</a></dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/AbstractHookRunner.html#run--">run()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookRunner.html" title="class in com.github.lookout.whoas">AbstractHookRunner</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/AbstractHookRunner.html#run--">run()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookRunner.html" title="class in com.github.lookout.whoas">AbstractHookRunner</a></dt>
@ -305,6 +344,10 @@
</dd> </dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/AbstractHookQueue.html#start--">start()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/AbstractHookQueue.html#start--">start()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#start--">start()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Setup the Redis client</div>
</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/AbstractHookQueue.html#started">started</a></span> - Variable in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/AbstractHookQueue.html#started">started</a></span> - Variable in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/AbstractHookQueue.html#stop--">stop()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/AbstractHookQueue.html#stop--">stop()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas">AbstractHookQueue</a></dt>
@ -316,6 +359,10 @@
This will only come into effect after the runner has completed it's This will only come into effect after the runner has completed it's
currently executing work</div> currently executing work</div>
</dd> </dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#stop--">stop()</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Stop the Redis client</div>
</dd>
</dl> </dl>
<a name="I:T"> <a name="I:T">
<!-- --> <!-- -->
@ -361,6 +408,10 @@
</dd> </dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/WhoasQueueConfig.html#WhoasQueueConfig--">WhoasQueueConfig()</a></span> - Constructor for class com.github.lookout.whoas.<a href="com/github/lookout/whoas/WhoasQueueConfig.html" title="class in com.github.lookout.whoas">WhoasQueueConfig</a></dt> <dt><span class="memberNameLink"><a href="com/github/lookout/whoas/WhoasQueueConfig.html#WhoasQueueConfig--">WhoasQueueConfig()</a></span> - Constructor for class com.github.lookout.whoas.<a href="com/github/lookout/whoas/WhoasQueueConfig.html" title="class in com.github.lookout.whoas">WhoasQueueConfig</a></dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="com/github/lookout/whoas/RedisQueue.html#withRedis-com.github.lookout.whoas.RedisQueueAction-">withRedis(RedisQueueAction)</a></span> - Method in class com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas">RedisQueue</a></dt>
<dd>
<div class="block">Allocate redis client from the pool</div>
</dd>
</dl> </dl>
<a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:K">K</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:Q">Q</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:W">W</a>&nbsp;</div> <a href="#I:A">A</a>&nbsp;<a href="#I:B">B</a>&nbsp;<a href="#I:C">C</a>&nbsp;<a href="#I:D">D</a>&nbsp;<a href="#I:G">G</a>&nbsp;<a href="#I:H">H</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:K">K</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:P">P</a>&nbsp;<a href="#I:Q">Q</a>&nbsp;<a href="#I:R">R</a>&nbsp;<a href="#I:S">S</a>&nbsp;<a href="#I:T">T</a>&nbsp;<a href="#I:U">U</a>&nbsp;<a href="#I:W">W</a>&nbsp;</div>
<!-- ======= START OF BOTTOM NAVBAR ====== --> <!-- ======= START OF BOTTOM NAVBAR ====== -->

View File

@ -2,7 +2,7 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>whoas 0.3.0 API</title> <title>whoas 0.3.0 API</title>
<script type="text/javascript"> <script type="text/javascript">
targetPage = "" + window.location.search; targetPage = "" + window.location.search;

View File

@ -2,9 +2,9 @@
<!-- NewPage --> <!-- NewPage -->
<html lang="en"> <html lang="en">
<head> <head>
<!-- Generated by javadoc (1.8.0_25) on Fri Apr 03 08:38:57 PDT 2015 --> <!-- Generated by javadoc (1.8.0_25) on Mon Apr 06 10:05:38 PDT 2015 -->
<title>Class Hierarchy (whoas 0.3.0 API)</title> <title>Class Hierarchy (whoas 0.3.0 API)</title>
<meta name="date" content="2015-04-03"> <meta name="date" content="2015-04-06">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script> <script type="text/javascript" src="script.js"></script>
</head> </head>
@ -82,6 +82,7 @@
<li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">AbstractHookQueue</span></a> <li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">AbstractHookQueue</span></a>
<ul> <ul>
<li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">InMemoryQueue</span></a></li> <li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/InMemoryQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">InMemoryQueue</span></a></li>
<li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueue.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">RedisQueue</span></a></li>
</ul> </ul>
</li> </li>
<li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookRunner.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">AbstractHookRunner</span></a> <li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/AbstractHookRunner.html" title="class in com.github.lookout.whoas"><span class="typeNameLink">AbstractHookRunner</span></a>
@ -99,6 +100,7 @@
<h2 title="Interface Hierarchy">Interface Hierarchy</h2> <h2 title="Interface Hierarchy">Interface Hierarchy</h2>
<ul> <ul>
<li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">QueueAction</span></a></li> <li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/QueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">QueueAction</span></a></li>
<li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/RedisQueueAction.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">RedisQueueAction</span></a>&lt;T&gt;</li>
<li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">WhoasConfiguration</span></a>&lt;T&gt;</li> <li type="circle">com.github.lookout.whoas.<a href="com/github/lookout/whoas/WhoasConfiguration.html" title="interface in com.github.lookout.whoas"><span class="typeNameLink">WhoasConfiguration</span></a>&lt;T&gt;</li>
</ul> </ul>
</div> </div>

View File

@ -24,8 +24,9 @@ public abstract class AbstractHookQueue {
/** /**
* @return Size of the queue, if not implemented by the provider, returns -1 * @return Size of the queue, if not implemented by the provider, returns -1
* @throws Exception implementors may throw Exceptions
*/ */
public abstract int getSize(); public abstract int getSize() throws Exception;
/** /**
* @param action a {@code QueueAction} to invoke * @param action a {@code QueueAction} to invoke
@ -36,6 +37,7 @@ public abstract class AbstractHookQueue {
/** /**
* @param request A valid {@code HookRequest} * @param request A valid {@code HookRequest}
* @return true if the {@code HookRequest} was successfully added to the queue * @return true if the {@code HookRequest} was successfully added to the queue
* @throws Exception implementors may throw Exceptions
*/ */
public abstract Boolean push(HookRequest request); public abstract Boolean push(HookRequest request) throws Exception;
} }

View File

@ -3,7 +3,7 @@ package com.github.lookout.whoas;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;; import org.slf4j.LoggerFactory;
/** /**

View File

@ -49,14 +49,14 @@ public class Publisher {
String responseBody = response.readEntity(String.class); String responseBody = response.readEntity(String.class);
} }
catch (ProcessingException exc) { catch (ProcessingException exc) {
logger.warn("\"POST\" to url: \"${request.url}\" failed", exc); logger.warn("POST to url \"{}\" failed", request.url, exc);
retryableExc = true; retryableExc = true;
} }
if ((retryableExc) || (shouldRetry(response))) { if ((retryableExc) || (shouldRetry(response))) {
if (request.retries >= this.maxRetries) { if (request.retries >= this.maxRetries) {
logger.error("Giving up on \"POST\" to url: \"${request.url}\" " + logger.error("Giving up on POST to url \"{}\" after {} retries",
"after ${request.retries} retries"); request.url, request.retries);
return false; return false;
} }
request.retries = (request.retries + 1); request.retries = (request.retries + 1);
@ -64,7 +64,7 @@ public class Publisher {
return this.publish(request); return this.publish(request);
} }
logger.debug("\"POST\" to url: \"${request.url}\" succeeded"); logger.debug("POST to url \"{}\" succeeded", request.url);
return true; return true;
} }
@ -80,7 +80,8 @@ public class Publisher {
} }
/* Enhance your calm and try again */ /* Enhance your calm and try again */
if (response.getStatus() == 420) { if ((response.getStatus() == 420) ||
(response.getStatus() == 429)) {
return true; return true;
} }

View File

@ -1,59 +1,83 @@
package com.github.lookout.whoas package com.github.lookout.whoas;
import com.fasterxml.jackson.databind.ObjectMapper import java.util.List;
import redis.clients.jedis.Jedis import com.fasterxml.jackson.databind.ObjectMapper;
import redis.clients.jedis.JedisPool import com.fasterxml.jackson.core.JsonProcessingException;
import redis.clients.jedis.JedisPoolConfig import redis.clients.jedis.Jedis;
import org.slf4j.Logger import redis.clients.jedis.JedisPool;
import org.slf4j.LoggerFactory import redis.clients.jedis.JedisPoolConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** /**
* A redis queue that offers distributed and persistent queue * A redis queue that offers distributed and persistent queue
*/ */
class RedisQueue extends AbstractHookQueue { public class RedisQueue extends AbstractHookQueue {
private WhoasQueueConfig queueConfig private WhoasQueueConfig queueConfig;
private JedisPool pool = null private JedisPool pool = null;
private static Integer maxActiveConnections = 10 private static Integer maxActiveConnections = 10;
private static Integer maxIdleConnections = 5 private static Integer maxIdleConnections = 5;
private static Integer minIdleConnections = 1 private static Integer minIdleConnections = 1;
private Logger logger = LoggerFactory.getLogger(RedisQueue.class) private Logger logger = LoggerFactory.getLogger(RedisQueue.class);
/** /**
* Create the RedisQueue with valid config * Create the RedisQueue with valid config
*
* @param queueConfig necessary configuration to connect to Redis
*/ */
RedisQueue(WhoasQueueConfig queueConfig) { public RedisQueue(WhoasQueueConfig queueConfig) {
this.queueConfig = queueConfig this.queueConfig = queueConfig;
} }
/** /**
* Default constructor * Default constructor
*/ */
RedisQueue() { public RedisQueue() {
queueConfig = new WhoasQueueConfig() queueConfig = new WhoasQueueConfig();
}
/**
* Allow users to provide their own {@code JedisPool} instance
*
* @param pool an already set up pool
*/
public RedisQueue(JedisPool pool) {
this();
this.pool = pool;
} }
/** /**
* Return the number of elements in the queue * Return the number of elements in the queue
*/ */
int getSize() { public int getSize() throws Exception {
if (!this.started) { if (!this.started) {
throw new Exception("Queue must be started before this operation is invoked") throw new Exception("Queue must be started before this operation is invoked");
}
return withRedis() { Jedis redisClient ->
return redisClient.llen(this.queueConfig.key)
} }
return ((Integer)withRedis(new RedisQueueAction<Integer>() {
@Override
public Integer call(Jedis redisClient) {
Long size = redisClient.llen(queueConfig.key);
return size.intValue();
}
})).intValue();
} }
/** /**
* Setup the Redis client * Setup the Redis client
*/ */
@Override @Override
void start() { public void start() {
super.start() super.start();
/* Bail early if we already have a valid pool */
if (this.pool instanceof JedisPool) {
return;
}
logger.debug("Setting up redis queue \"${this.queueConfig.key}\" on the server " + logger.debug("Setting up redis queue \"${this.queueConfig.key}\" on the server " +
"\"${this.queueConfig.hostname}:${this.queueConfig.port}") "\"${this.queueConfig.hostname}:${this.queueConfig.port}");
/** /**
* Setup jedis pool * Setup jedis pool
@ -63,37 +87,26 @@ class RedisQueue extends AbstractHookQueue {
* multiple jedis instances and use them reliably and efficiently across different * multiple jedis instances and use them reliably and efficiently across different
* threads * threads
*/ */
JedisPoolConfig poolConfig = new JedisPoolConfig() JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(maxActiveConnections) poolConfig.setMaxTotal(maxActiveConnections);
poolConfig.setTestOnBorrow(true) poolConfig.setTestOnBorrow(true);
poolConfig.setTestOnReturn(true) poolConfig.setTestOnReturn(true);
poolConfig.setMaxIdle(maxIdleConnections) poolConfig.setMaxIdle(maxIdleConnections);
poolConfig.setMinIdle(minIdleConnections) poolConfig.setMinIdle(minIdleConnections);
poolConfig.setTestWhileIdle(true) poolConfig.setTestWhileIdle(true);
/* Create the pool */ /* Create the pool */
pool = new JedisPool(poolConfig, this.queueConfig.hostname, this.queueConfig.port) pool = new JedisPool(poolConfig, this.queueConfig.hostname, this.queueConfig.port);
} }
/** /**
* Stop the Redis client * Stop the Redis client
*/ */
@Override @Override
void stop() { public void stop() {
super.stop() super.stop();
pool.destroy() pool.destroy();
pool = null pool = null;
}
/** Allocate redis client from the pool */
Object withRedis(Closure closure) {
Jedis redisClient = pool.resource
try {
return closure.call(redisClient)
}
finally {
redisClient.close()
}
} }
/** /**
@ -103,35 +116,38 @@ class RedisQueue extends AbstractHookQueue {
* If the Closure throws an exception, the dequeued item will be returned * If the Closure throws an exception, the dequeued item will be returned
* to the tail end of the queue * to the tail end of the queue
*/ */
void pop(QueueAction action) { public void pop(final QueueAction action) throws Exception {
if (action == null) { if (action == null) {
throw new Exception("Must provide a Closure to RedisQueue.pop()") throw new Exception("Must provide a Closure to RedisQueue.pop()");
} }
if (!this.started) { if (!this.started) {
throw new Exception("Queue must be started before this operation is invoked") throw new Exception("Queue must be started before this operation is invoked");
} }
withRedis() { Jedis redisClient -> withRedis(new RedisQueueAction<Long>() {
@Override
public Long call(Jedis redisClient) throws Exception {
/**
* The blpop returns list of strings (key and value)
*/
List<String> messages = redisClient.blpop(0, queueConfig.key);
/** /* If valid, decode message */
* The blpop returns list of strings (key and value) if ((messages != null) && (!messages.isEmpty())) {
*/ ObjectMapper mapper = new ObjectMapper();
List<String> messages = redisClient.blpop(0, this.queueConfig.key) HookRequest request = mapper.readValue(messages.get(1), HookRequest.class);
try {
/* If valid, decode message */ action.call(request);
if (messages) { } catch (Exception ex) {
ObjectMapper mapper = new ObjectMapper() /* Put this back on the front of the queue */
HookRequest request = mapper.readValue(messages.get(1), HookRequest.class) logger.info("\"Pop\" on redis queue failed, pushing it back on front of the queue", ex);
try { return redisClient.lpush(queueConfig.key, messages.get(1));
action.call(request) }
} catch (Exception ex) {
/* Put this back on the front of the queue */
logger.info("\"Pop\" on redis queue failed, pushing it back on front of the queue", ex)
redisClient.lpush(this.queueConfig.key, messages.get(1))
} }
return new Long(-1);
} }
} });
} }
/** /**
@ -139,16 +155,43 @@ class RedisQueue extends AbstractHookQueue {
* *
* If the request cannot be inserted, this method will return false, * If the request cannot be inserted, this method will return false,
* otherwise true. * otherwise true.
*
* @param request A {@code HookRequest} to enqueue
*/ */
Boolean push(HookRequest request) { @Override
public Boolean push(HookRequest request) throws JsonProcessingException, Exception {
if (!this.started) { if (!this.started) {
throw new Exception("Queue must be started before this operation is invoked") throw new Exception("Queue must be started before this operation is invoked");
} }
ObjectMapper mapper = new ObjectMapper() ObjectMapper mapper = new ObjectMapper();
String jsonPayload = mapper.writeValueAsString(request) final String jsonPayload = mapper.writeValueAsString(request);
return withRedis() { Jedis redisClient -> return (Boolean)withRedis(new RedisQueueAction<Boolean>() {
return redisClient.rpush(this.queueConfig.key, jsonPayload) != 0 @Override
public Boolean call(Jedis redisClient) {
System.out.println(String.format("%s %s", queueConfig.key, jsonPayload));
redisClient.rpush(queueConfig.key, jsonPayload);
return true;
}
});
}
/** Allocate redis client from the pool
*
* @param action callback to invoke with a {@code Jedis} object from the
* pool
* @throws Exception propogates underlying Jedis exceptions
* @return propogates a generic {@code Object} up from the {@code RedisQueueAction}
*/
protected Object withRedis(RedisQueueAction action) throws Exception {
Jedis redisClient = this.pool.getResource();
System.out.println(redisClient.toString());
try {
return action.call(redisClient);
}
finally {
redisClient.close();
} }
} }
} }

View File

@ -0,0 +1,7 @@
package com.github.lookout.whoas;
import redis.clients.jedis.Jedis;
public interface RedisQueueAction<T> {
public T call(Jedis jedis) throws Exception;
}

View File

@ -40,6 +40,7 @@ class PublisherSpec extends Specification {
201 | false 201 | false
400 | false 400 | false
420 | true 420 | true
429 | true
500 | true 500 | true
599 | true 599 | true
} }

View File

@ -1,11 +1,18 @@
package com.github.lookout.whoas package com.github.lookout.whoas
import com.fiftyonred.mock_jedis.MockJedis import com.fiftyonred.mock_jedis.MockJedis
import com.fiftyonred.mock_jedis.MockJedisPool
import redis.clients.jedis.Jedis import redis.clients.jedis.Jedis
import redis.clients.jedis.JedisPool
import redis.clients.jedis.JedisPoolConfig
import spock.lang.* import spock.lang.*
class RedisQueueSpec extends Specification { class RedisQueueSpec extends Specification {
protected MockJedisPool mockPool() {
return new MockJedisPool(new JedisPoolConfig(), 'example.com')
}
def "getSize()ing without a start should throw"() { def "getSize()ing without a start should throw"() {
given: given:
@ -20,15 +27,13 @@ class RedisQueueSpec extends Specification {
def "getSize() should return 0 by default"() { def "getSize() should return 0 by default"() {
given: given:
RedisQueue queue = new RedisQueue() RedisQueue queue = new RedisQueue(mockPool())
Jedis redisClient = new MockJedis("test")
when: when:
queue.start() queue.start()
queue.pool.metaClass.getResource = {redisClient}
then: then:
queue.getSize() == 0 queue.size == 0
} }
def "pop()ing without a closure should throw"() { def "pop()ing without a closure should throw"() {
@ -64,50 +69,62 @@ class RedisQueueSpec extends Specification {
thrown Exception thrown Exception
} }
}
/** Spec for testing Jedis interactions with mock-jedis */
class RedisQueueMockIntegrationSpec extends RedisQueueSpec {
protected RedisQueue queue
protected Jedis client
protected List<String> store = []
def setup() {
this.queue = new RedisQueue(mockPool())
this.client = Mock(MockJedis, constructorArgs: ['example.com'])
this.queue.pool.client = this.client
_ * client.llen(_) >> { this.store.size }
}
def "push() should put onto the internal queue"() { def "push() should put onto the internal queue"() {
given: given:
RedisQueue queue = new RedisQueue() 2 * client.rpush(_, _) >> { key, payload -> store << payload[]; return 1 }
Jedis redisClient = new MockJedis("test")
redisClient.metaClass.rpush = {String key, String payload -> redisClient.lpush(key, payload)}
when: when:
queue.start() queue.start()
queue.pool.metaClass.getResource = {redisClient}
queue.push(new HookRequest()) queue.push(new HookRequest())
queue.push(new HookRequest()) queue.push(new HookRequest())
then: then:
queue.getSize() == 2 queue.size == 2
} }
def "pop() after push should receive a request"() { def "pop() after push should receive a request"() {
given: given:
RedisQueue queue = new RedisQueue() /* Mock rpush() and just say it pushed one element
Jedis redisClient = new MockJedis("test") * Due to some weirdness in Spock's mocking, `payload` comes in as a
redisClient.metaClass.rpush = {String key, String payload -> redisClient.lpush(key, payload)} * list of strings
redisClient.metaClass.blpop = {Integer timeout, String key -> [key, redisClient.lpop(key)]} */
1 * client.rpush(_, _) >> { key, payload -> store << payload[0]; return 1 }
/* Need to return a stupid List since jedis */
1 * client.blpop(_, _) >> { [null, store.pop()] }
when: when:
queue.start() queue.start()
queue.pool.metaClass.getResource = {redisClient}
HookRequest test = new HookRequest() HookRequest test = new HookRequest()
queue.push(test) queue.push(test)
then: then:
queue.getSize() == 1 store.size == 1
queue.pop() { HookRequest fetched -> fetched == test} queue.pop { HookRequest fetched -> fetched == test}
queue.getSize() == 0 store.size == 0
} }
def "push() on rpush exception should return false"() { def "push() on rpush exception should return false"() {
given: given:
RedisQueue queue = new RedisQueue() 1 * client.rpush(*_) >> { throw new Exception('Spockd!') }
Jedis redisClient = new MockJedis("test")
redisClient.metaClass.rpush = {String key, String payload -> throw new Exception("Test Exception")}
when: when:
queue.start() queue.start()
queue.pool.metaClass.getResource = {redisClient}
queue.push(new HookRequest()) queue.push(new HookRequest())
then: then:
@ -116,13 +133,10 @@ class RedisQueueSpec extends Specification {
def "pop() on blpop exception simple return, nothing to requeue "() { def "pop() on blpop exception simple return, nothing to requeue "() {
given: given:
RedisQueue queue = new RedisQueue() 1 * client.blpop(*_) >> { throw new Exception('Spockd!') }
Jedis redisClient = new MockJedis("test")
redisClient.metaClass.blpop = {Integer timeout, String key -> throw new Exception("Test Exception")}
when: when:
queue.start() queue.start()
queue.pool.metaClass.getResource = {redisClient}
queue.pop() { } queue.pop() { }
then: then:
@ -131,19 +145,16 @@ class RedisQueueSpec extends Specification {
def "pop() on exception while executing closure should requeue"() { def "pop() on exception while executing closure should requeue"() {
given: given:
RedisQueue queue = new RedisQueue() 1 * client.rpush(_, _) >> { key, payload -> this.store << payload[0]; return 1 }
Jedis redisClient = new MockJedis("test") 1 * client.blpop(*_) >> { [null, this.store.pop()] }
redisClient.metaClass.rpush = {String key, String payload -> redisClient.lpush(key, payload)} 1 * client.lpush(_, _) >> { key, payload -> this.store << payload[0]; return 1 }
redisClient.metaClass.blpop = {Integer timeout, String key -> [key, redisClient.lpop(key)]}
when: when:
queue.start() queue.start()
queue.pool.metaClass.getResource = {redisClient}
queue.push(new HookRequest()) queue.push(new HookRequest())
queue.pop() { throw new Exception("Test Exception") } queue.pop() { throw new Exception("Test Exception") }
then: then:
queue.getSize() == 1 queue.size == 1
} }
} }