forked from huangzworks/DisqueBook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
addjob.html
317 lines (221 loc) · 13.4 KB
/
addjob.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ADDJOB — Disque 使用教程</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="top" title="Disque 使用教程" href="index.html"/>
<link rel="next" title="GETJOB" href="getjob.html"/>
<link rel="prev" title="搭建多节点集群" href="multi-nodes.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> Disque 使用教程
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="install.html">安装方法</a></li>
<li class="toctree-l1"><a class="reference internal" href="client.html">客户端</a></li>
<li class="toctree-l1"><a class="reference internal" href="single-node.html">搭建单节点集群</a></li>
<li class="toctree-l1"><a class="reference internal" href="multi-nodes.html">搭建多节点集群</a></li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="">ADDJOB</a></li>
<li class="toctree-l1"><a class="reference internal" href="getjob.html">GETJOB</a></li>
<li class="toctree-l1"><a class="reference internal" href="qlen.html">QLEN</a></li>
<li class="toctree-l1"><a class="reference internal" href="qpeek.html">QPEEK</a></li>
<li class="toctree-l1"><a class="reference internal" href="show.html">SHOW</a></li>
<li class="toctree-l1"><a class="reference internal" href="ackjob.html">ACKJOB</a></li>
<li class="toctree-l1"><a class="reference internal" href="fastack.html">FASTACK</a></li>
<li class="toctree-l1"><a class="reference internal" href="info.html">INFO</a></li>
<li class="toctree-l1"><a class="reference internal" href="hello.html">HELLO</a></li>
<li class="toctree-l1"><a class="reference internal" href="enqueue.html">ENQUEUE</a></li>
<li class="toctree-l1"><a class="reference internal" href="dequeue.html">DEQUEUE</a></li>
<li class="toctree-l1"><a class="reference internal" href="deljob.html">DELJOB</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="cluster-nodes.html">CLUSTER NODES</a></li>
<li class="toctree-l1"><a class="reference internal" href="cluster-meet.html">CLUSTER MEET</a></li>
<li class="toctree-l1"><a class="reference internal" href="cluster-forget.html">CLUSTER FORGET</a></li>
<li class="toctree-l1"><a class="reference internal" href="cluster-info.html">CLUSTER INFO</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="job_ids.html">任务 ID</a></li>
<li class="toctree-l1"><a class="reference internal" href="code-analysis.html">Disque 源码分析</a><ul>
<li class="toctree-l2"><a class="reference internal" href="code-analysis.html#id1">代码重用</a></li>
<li class="toctree-l2"><a class="reference internal" href="code-analysis.html#id2">服务器状态</a></li>
<li class="toctree-l2"><a class="reference internal" href="code-analysis.html#id3">队列</a></li>
<li class="toctree-l2"><a class="reference internal" href="code-analysis.html#id4">任务</a></li>
<li class="toctree-l2"><a class="reference internal" href="code-analysis.html#id5">节点与集群</a></li>
<li class="toctree-l2"><a class="reference internal" href="code-analysis.html#id6">命令执行流程</a></li>
<li class="toctree-l2"><a class="reference internal" href="code-analysis.html#id7">结论</a></li>
</ul>
</li>
</ul>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Disque 使用教程</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> »</li>
<li>ADDJOB</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/addjob.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document">
<div class="section" id="addjob">
<h1>ADDJOB<a class="headerlink" href="#addjob" title="永久链接至标题">¶</a></h1>
<div class="highlight-lua"><div class="highlight"><pre><span class="n">ADDJOB</span> <span class="n">queue_name</span> <span class="n">job</span> <span class="o"><</span><span class="n">ms</span><span class="o">-</span><span class="n">timeout</span><span class="o">></span> <span class="p">[</span><span class="n">REPLICATE</span> <span class="o"><</span><span class="n">count</span><span class="o">></span><span class="p">]</span> <span class="p">[</span><span class="n">DELAY</span> <span class="o"><</span><span class="n">sec</span><span class="o">></span><span class="p">]</span> <span class="p">[</span><span class="n">RETRY</span> <span class="o"><</span><span class="n">sec</span><span class="o">></span><span class="p">]</span> <span class="p">[</span><span class="n">TTL</span> <span class="o"><</span><span class="n">sec</span><span class="o">></span><span class="p">]</span> <span class="p">[</span><span class="n">MAXLEN</span> <span class="o"><</span><span class="n">count</span><span class="o">></span><span class="p">]</span> <span class="p">[</span><span class="n">ASYNC</span><span class="p">]</span>
</pre></div>
</div>
<p>将一个新任务添加到指定的队列里面。</p>
<p>以下是各个参数的含义:</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">queue_name</span></code> :
队列的名字,
可以是任意字符串。
如果指定的队列并不存在,
那么它将被自动创建,
用户无需手动创建队列。
当队列没有任务可传递时,
它也会自动被释放。</li>
<li><code class="docutils literal"><span class="pre">job</span></code> :
使用字符串描述的任务。
Disque 不关心任务的具体含义,
对于它来说,
一项任务就是一条待传送的消息。</li>
<li><code class="docutils literal"><span class="pre">ms-timeout</span></code> :
毫秒精度的命令超时限制。
如果用户没有使用 <code class="docutils literal"><span class="pre">ASYNC</span></code> 选项,
并且在指定的毫秒数之内,
任务的复制级别(replication level)未能达到指定的要求,
那么命令将返回一个错误,
而节点会尽可能地清理未发出的消息,
并将遍布于整个集群的消息副本删除,
但是任务仍然有可能会在之后被传递。
在默认的服务器频率(hz)下,
实际的超时解析度为 1/10 秒钟。</li>
<li><code class="docutils literal"><span class="pre">REPLICATE</span> <span class="pre">count</span></code> :
指定任务需要复制至多少个节点。</li>
<li><code class="docutils literal"><span class="pre">DELAY</span> <span class="pre">sec</span></code> :
指定任务在放入各个节点的队列之前,
需要等待多少秒钟。</li>
<li><code class="docutils literal"><span class="pre">RETRY</span> <span class="pre">sec</span></code> :
在未接到 <code class="docutils literal"><span class="pre">ACK</span></code> 回复的情况下,
节点在多少秒钟之后才会重新将任务放入待传递的队列里面。
如果 <code class="docutils literal"><span class="pre">sec</span></code> 参数的值为 <code class="docutils literal"><span class="pre">0</span></code> ,
那么任务将以“最多一次”(at-most-once)的方式进行传递:
这个任务不会被重新放入到待传递队列里面,
并且它的复制因子(replication factor)也只会为 1 。</li>
<li><code class="docutils literal"><span class="pre">TTL</span> <span class="pre">sec</span></code> :
秒级精度的任务生存时间。
在生存时间消耗完毕之后,
即使任务还未被成功传递,
它也会被删除。</li>
<li><code class="docutils literal"><span class="pre">MAXLEN</span> <span class="pre">count</span></code> :
指定队列最多可以存放多少个待传递的任务。
在队列已满的情况下,
尝试添加新任务将被拒绝,
而客户端也会接收到一个错误。</li>
<li><code class="docutils literal"><span class="pre">ASYNC</span></code> :
要求服务器让命令尽快返回,
并在后台执行将任务复制至其他节点的工作。
任务会尽快地被放入到队列里面,
而在普通情况下,
只有当任务已经被放入到队列里面的时候,
客户端才会接收到正面的回复。</li>
</ul>
<p>当用户指定了 <code class="docutils literal"><span class="pre">ASYNC</span></code> 选项,
或者任务已经被正确地复制到了指定数量的节点上面时,
命令返回已入队任务的 ID ;
否则命令返回错误。</p>
<div class="highlight-lua"><div class="highlight"><pre><span class="n">disque</span><span class="o">></span> <span class="n">ADDJOB</span> <span class="n">greeting</span> <span class="s2">"</span><span class="s">hello world!"</span> <span class="mi">0</span> <span class="c1">-- 将任务放进队列里面</span>
<span class="n">DI216f7fa17693623ffb3bd8b0902e134f4ab6a5d305a0SQ</span> <span class="c1">-- 任务 ID</span>
<span class="n">disque</span><span class="o">></span> <span class="n">ADDJOB</span> <span class="n">greeting</span> <span class="s2">"</span><span class="s">good morning!"</span> <span class="mi">0</span>
<span class="n">DI216f7fa16a8e4a7428b18c2b0ec180963795b0b705a0SQ</span>
<span class="n">disque</span><span class="o">></span> <span class="n">ADDJOB</span> <span class="n">greeting</span> <span class="s2">"</span><span class="s">bye bye~"</span> <span class="mi">0</span>
<span class="n">DI216f7fa11413878f376588c85aca7c7fa22232f905a0SQ</span>
</pre></div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="getjob.html" class="btn btn-neutral float-right" title="GETJOB" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="multi-nodes.html" class="btn btn-neutral" title="搭建多节点集群" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div class="section" id="discuss">
<h2>
论坛
<a class="headerlink" href="#discuss" title="永久链接至标题">¶</a>
</h2>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'disquebook'; // required: replace example with your forum shortname
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
<div role="contentinfo">
<p>
© 版权所有 2015, 黄健宏(huangz).
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'1.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>