chickadee » hen

Outdated egg!

This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.

hen --- a beanstalk client

Description

beanstalk is a protocol for interfacing with beanstalkd, a "simple, fast work queue."

hen is a simple client for workers and producers

Author

Joseph Gay

Requirements

dsssl-utils

list-utils

miscmacros

tcp6

Documentation

Examples

Worker:
(with-hen (tcp-connect "localhost" 11300)
  (while #t         
    (hen-ignore "default")
    (hen-watch "my-tube")
    (let ([job (hen-reserve)]) ; blocks, optional timeout parameter
      (my-process-job job)
      (hen-delete ((compose cdr assoc) 'id job)))))
Producer:
(with-hen (tcp-connect "localhost" 11300)
  (hen-use "my-tube")
  (hen-put "hello worker!"))

Procedures

with-hen TCP-CONNECTION &FORMSprocedure

This wrapper procedure is for added convenience. TCP-CONNECTION should be a multi-value as is returned from tcp-connect in tcp6. with-hen is used as in the examples above. It will automatically call hen-quit and return the value of the last form provided to be evaluated.

The following are supported beanstalk commands:

(hen-put [PRI 2^31 [DELAY 0 [TTR 36000]]] data)procedure
(hen-reserve [TIMEOUT #f])procedure
hen-use TUBEprocedure
hen-delete IDprocedure
(hen-release ID [PRI 2^31 [DELAY 0]])procedure
(hen-bury ID [PRI 2^31])procedure
hen-touch IDprocedure
hen-watch TUBEprocedure
hen-ignore TUBEprocedure
hen-peek IDprocedure
hen-peek-readyprocedure
hen-peek-delayedprocedure
hen-peek-buriedprocedure
hen-kick boundprocedure
hen-stats-job IDprocedure
hen-stats-tube TUBEprocedure
hen-statsprocedure
hen-list-tubesprocedure
hen-list-tube-usedprocedure
hen-list-tubes-watchedprocedure
hen-quitprocedure
hen-pause-tube TUBE DELAYprocedure

Most of the commands will return a simple string status. Exceptions are the stats commands, which return an alist, and the reserve command, which returns a pair (job-id . data) if a job is reserved.

All hen commands also accept keyword arguments #:tcp-in and #:tcp-out to override hen-in and hen-out, which are the default ports, initially unspecified.

Notes

Source

Source code is available in the eggs repository as well as on github: https://github.com/joseph-gay/cscm-hen

Version

0.7
Bug fixes for default priority on 32 bit systems and for unconsumed response data (Thanks to Tom Danielson)
0.6
Bug fix for hen-list-tubes-watched, fixed egg dependencies
0.5
Initial release

License

 Copyright (C) 2011 by Joseph Gay

 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 3 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

Contents »