1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
8
<title>Class: TaskQueueSQS</title>
10
<link rel="stylesheet" href="./rdoc.css" type="text/css" media="screen" />
12
<script src="./js/jquery.js" type="text/javascript"
13
charset="utf-8"></script>
14
<script src="./js/thickbox-compressed.js" type="text/javascript"
15
charset="utf-8"></script>
16
<script src="./js/quicksearch.js" type="text/javascript"
17
charset="utf-8"></script>
18
<script src="./js/darkfish.js" type="text/javascript"
19
charset="utf-8"></script>
25
<div id="home-metadata">
26
<div id="home-section" class="section">
27
<h3 class="section-header">
28
<a href="./index.html">Home</a>
29
<a href="./index.html#classes">Classes</a>
30
<a href="./index.html#methods">Methods</a>
35
<div id="file-metadata">
36
<div id="file-list-section" class="section">
37
<h3 class="section-header">In Files</h3>
38
<div class="section-body">
41
<li><a href="./__/Neptune/task_queue_sqs_rb.html?TB_iframe=true&height=550&width=785"
42
class="thickbox" title="../Neptune/task_queue_sqs.rb">../Neptune/task_queue_sqs.rb</a></li>
51
<div id="class-metadata">
55
<div id="parent-class-section" class="section">
56
<h3 class="section-header">Parent</h3>
58
<p class="link"><a href="TaskQueue.html">TaskQueue</a></p>
63
<!-- Namespace Contents -->
66
<!-- Method Quickref -->
68
<div id="method-list-section" class="section">
69
<h3 class="section-header">Methods</h3>
70
<ul class="link-list">
72
<li><a href="#method-c-new">::new</a></li>
74
<li><a href="#method-i-get_creds">#get_creds</a></li>
76
<li><a href="#method-i-pop">#pop</a></li>
78
<li><a href="#method-i-push">#push</a></li>
80
<li><a href="#method-i-size">#size</a></li>
82
<li><a href="#method-i-to_s">#to_s</a></li>
88
<!-- Included Modules -->
92
<div id="project-metadata">
96
<div id="classindex-section" class="section project-section">
97
<h3 class="section-header">Class/Module Index
98
<span class="search-toggle"><img src="./images/find.png"
99
height="16" width="16" alt="[+]"
100
title="show/hide quicksearch" /></span></h3>
101
<form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
103
<legend>Quicksearch</legend>
104
<input type="text" name="quicksearch" value=""
105
class="quicksearch-field" />
109
<ul class="link-list">
111
<li><a href="./AppControllerClient.html">AppControllerClient</a></li>
113
<li><a href="./BadConfigurationException.html">BadConfigurationException</a></li>
115
<li><a href="./BlobServer.html">BlobServer</a></li>
117
<li><a href="./Collectd.html">Collectd</a></li>
119
<li><a href="./CronHelper.html">CronHelper</a></li>
121
<li><a href="./Djinn.html">Djinn</a></li>
123
<li><a href="./DjinnJobData.html">DjinnJobData</a></li>
125
<li><a href="./DjinnServer.html">DjinnServer</a></li>
127
<li><a href="./Ejabberd.html">Ejabberd</a></li>
129
<li><a href="./EngineFactory.html">EngineFactory</a></li>
131
<li><a href="./GodInterface.html">GodInterface</a></li>
133
<li><a href="./GoogleAppEnginePullQueue.html">GoogleAppEnginePullQueue</a></li>
135
<li><a href="./GoogleAppEnginePushQueue.html">GoogleAppEnginePushQueue</a></li>
137
<li><a href="./HAProxy.html">HAProxy</a></li>
139
<li><a href="./HelperFunctions.html">HelperFunctions</a></li>
141
<li><a href="./JSONClient.html">JSONClient</a></li>
143
<li><a href="./LoadBalancer.html">LoadBalancer</a></li>
145
<li><a href="./Monitoring.html">Monitoring</a></li>
147
<li><a href="./NeptuneJobData.html">NeptuneJobData</a></li>
149
<li><a href="./Nginx.html">Nginx</a></li>
151
<li><a href="./Object.html">Object</a></li>
153
<li><a href="./PbServer.html">PbServer</a></li>
155
<li><a href="./QueueFactory.html">QueueFactory</a></li>
157
<li><a href="./RabbitMQ.html">RabbitMQ</a></li>
159
<li><a href="./Repo.html">Repo</a></li>
161
<li><a href="./TaskEngine.html">TaskEngine</a></li>
163
<li><a href="./TaskEngineAppScale.html">TaskEngineAppScale</a></li>
165
<li><a href="./TaskEngineGoogleAppEngine.html">TaskEngineGoogleAppEngine</a></li>
167
<li><a href="./TaskQueue.html">TaskQueue</a></li>
169
<li><a href="./TaskQueueAzureQueue.html">TaskQueueAzureQueue</a></li>
171
<li><a href="./TaskQueueGoogleAppEngine.html">TaskQueueGoogleAppEngine</a></li>
173
<li><a href="./TaskQueueRabbitMQ.html">TaskQueueRabbitMQ</a></li>
175
<li><a href="./TaskQueueSQS.html">TaskQueueSQS</a></li>
177
<li><a href="./UserAppClient.html">UserAppClient</a></li>
179
<li><a href="./ZKInterface.html">ZKInterface</a></li>
182
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
189
<div id="documentation">
190
<h1 class="class">TaskQueueSQS</h1>
192
<div id="description">
201
<div id="attribute-method-details" class="method-section section">
202
<h3 class="section-header">Attributes</h3>
205
<div id="EC2_ACCESS_KEY-attribute-method" class="method-detail">
206
<a name="EC2_ACCESS_KEY"></a>
208
<a name="EC2_ACCESS_KEY="></a>
210
<div class="method-heading attribute-method-heading">
211
<span class="method-name">EC2_ACCESS_KEY</span><span
212
class="attribute-access-type">[RW]</span>
215
<div class="method-description">
222
<div id="EC2_SECRET_KEY-attribute-method" class="method-detail">
223
<a name="EC2_SECRET_KEY"></a>
225
<a name="EC2_SECRET_KEY="></a>
227
<div class="method-heading attribute-method-heading">
228
<span class="method-name">EC2_SECRET_KEY</span><span
229
class="attribute-access-type">[RW]</span>
232
<div class="method-description">
244
<div id="public-class-method-details" class="method-section section">
245
<h3 class="section-header">Public Class Methods</h3>
248
<div id="new-method" class="method-detail ">
249
<a name="method-c-new"></a>
252
<div class="method-heading">
253
<span class="method-name">new</span><span
254
class="method-args">(credentials)</span>
255
<span class="method-click-advice">click to toggle source</span>
259
<div class="method-description">
261
<p>creates a new SQS queue via the AWS RubyGem</p>
265
<div class="method-source-code"
268
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 20</span>
269
def initialize(credentials)
270
if credentials.class != <span class="ruby-constant">Hash</span>
271
raise <span class="ruby-constant">BadConfigurationException</span>.new
274
if credentials[<span class="ruby-string">'EC2_ACCESS_KEY'</span>].nil?
275
raise <span class="ruby-constant">BadConfigurationException</span>.new
277
<span class="ruby-ivar">@EC2_ACCESS_KEY</span> = credentials[<span class="ruby-string">'EC2_ACCESS_KEY'</span>]
279
if credentials[<span class="ruby-string">'EC2_SECRET_KEY'</span>].nil?
280
raise <span class="ruby-constant">BadConfigurationException</span>.new
282
<span class="ruby-ivar">@EC2_SECRET_KEY</span> = credentials[<span class="ruby-string">'EC2_SECRET_KEY'</span>]
284
<span class="ruby-ivar">@sqs</span> = <span class="ruby-constant">AWS</span>::<span class="ruby-constant">SQS</span>.new(:access_key_id => <span class="ruby-ivar">@EC2_ACCESS_KEY</span>,
285
:secret_access_key => <span class="ruby-ivar">@EC2_SECRET_KEY</span>)
286
<span class="ruby-ivar">@queue</span> = <span class="ruby-ivar">@sqs</span>.queues.create(<span class="ruby-constant">TASK_QUEUE_NAME</span>)
300
<div id="public-instance-method-details" class="method-section section">
301
<h3 class="section-header">Public Instance Methods</h3>
304
<div id="get_creds-method" class="method-detail ">
305
<a name="method-i-get_creds"></a>
308
<div class="method-heading">
309
<span class="method-name">get_creds</span><span
310
class="method-args">()</span>
311
<span class="method-click-advice">click to toggle source</span>
315
<div class="method-description">
317
<p>returns all the credentials needed to access this queue for SQS, it’s
318
just the access key and secret key</p>
322
<div class="method-source-code"
323
id="get_creds-source">
325
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 64</span>
327
return {<span class="ruby-string">'@EC2_ACCESS_KEY'</span> => <span class="ruby-ivar">@EC2_ACCESS_KEY</span>,
328
<span class="ruby-string">'@EC2_SECRET_KEY'</span> => <span class="ruby-ivar">@EC2_SECRET_KEY</span>}
340
<div id="pop-method" class="method-detail ">
341
<a name="method-i-pop"></a>
344
<div class="method-heading">
345
<span class="method-name">pop</span><span
346
class="method-args">()</span>
347
<span class="method-click-advice">click to toggle source</span>
351
<div class="method-description">
357
<div class="method-source-code"
360
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 52</span>
362
json_item = <span class="ruby-ivar">@queue</span>.receive_message()
363
return nil if json_item.nil? <span class="ruby-comment"># occurs when the queue is empty</span>
364
json_item.delete <span class="ruby-comment"># TODO(cgb) - maybe delete messages after the task is done</span>
366
item = <span class="ruby-constant">JSON</span>.load(json_item.body)
379
<div id="push-method" class="method-detail ">
380
<a name="method-i-push"></a>
383
<div class="method-heading">
384
<span class="method-name">push</span><span
385
class="method-args">(item)</span>
386
<span class="method-click-advice">click to toggle source</span>
390
<div class="method-description">
392
<p>stores a hash in the queue for later processing, by converting it to JSON</p>
396
<div class="method-source-code"
399
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 42</span>
401
if item.class != <span class="ruby-constant">Hash</span>
402
raise <span class="ruby-constant">BadConfigurationException</span>.new
405
json_item = <span class="ruby-constant">JSON</span>.dump(item)
406
<span class="ruby-ivar">@queue</span>.send_message(json_item)
418
<div id="size-method" class="method-detail ">
419
<a name="method-i-size"></a>
422
<div class="method-heading">
423
<span class="method-name">size</span><span
424
class="method-args">()</span>
425
<span class="method-click-advice">click to toggle source</span>
429
<div class="method-description">
431
<p>returns the number of messages in the queue</p>
435
<div class="method-source-code"
438
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 71</span>
440
return <span class="ruby-ivar">@queue</span>.visible_messages
452
<div id="to_s-method" class="method-detail ">
453
<a name="method-i-to_s"></a>
456
<div class="method-heading">
457
<span class="method-name">to_s</span><span
458
class="method-args">()</span>
459
<span class="method-click-advice">click to toggle source</span>
463
<div class="method-description">
465
<p>returns a string representation of this queue, which is just the queue name
466
and the credentials TODO(cgb): this seems generic enough to move into <a
467
href="TaskQueue.html">TaskQueue</a>, so do so</p>
471
<div class="method-source-code"
474
<span class="ruby-comment"># File ../Neptune/task_queue_sqs.rb, line 80</span>
476
access_key = <span class="ruby-constant">HelperFunctions</span>.obscure_string(<span class="ruby-ivar">@EC2_ACCESS_KEY</span>)
477
secret_key = <span class="ruby-constant">HelperFunctions</span>.obscure_string(<span class="ruby-ivar">@EC2_SECRET_KEY</span>)
478
return "Queue type: SQS, EC2_ACCESS_KEY: #{access_key}, " +
479
"EC2_SECRET_KEY: #{secret_key}"
496
<div id="validator-badges">
497
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
498
<p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
499
Rdoc Generator</a> 2</small>.</p>