common-lisp: tutorial four code
This commit is contained in:
parent
6aa023e14f
commit
1790bd1e4f
18
common-lisp/emit-log-direct.lisp
Executable file
18
common-lisp/emit-log-direct.lisp
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
sbcl --noinform --noprint $@ <<EOF
|
||||
|
||||
(ql:quickload :cl-bunny.examples)
|
||||
|
||||
(in-package :cl-bunny.examples)
|
||||
|
||||
(with-connection ()
|
||||
(with-channel ()
|
||||
(let* ((args (rest sb-ext:*posix-argv*))
|
||||
(severity (or (first args) "info"))
|
||||
(msg (format nil "~{~a~^ ~}" (rest args)))
|
||||
(x (exchange.direct "direct_logs")))
|
||||
(publish x msg :routing-key severity)
|
||||
(format t " [x] Sent '~a'~%" msg))))
|
||||
|
||||
EOF
|
27
common-lisp/receive-logs-direct.lisp
Executable file
27
common-lisp/receive-logs-direct.lisp
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
sbcl --noinform --noprint $@ <<EOF
|
||||
|
||||
(ql:quickload :cl-bunny.examples)
|
||||
|
||||
(in-package :cl-bunny.examples)
|
||||
|
||||
(if-let ((args (rest sb-ext:*posix-argv*)))
|
||||
(with-connection ()
|
||||
(with-channel ()
|
||||
(let ((q (queue.declare :auto-delete t))
|
||||
(x (exchange.direct "direct_logs")))
|
||||
(loop for severity in args do
|
||||
(queue.bind q x :routing-key severity))
|
||||
(format t " [*] Waiting for logs. To exit press CTRL+C~%")
|
||||
(handler-case
|
||||
(progn
|
||||
(subscribe q (lambda (message)
|
||||
(format t " [x] #~a:~a~%" (message-routing-key message) (message-body-string message)))
|
||||
:type :sync)
|
||||
(consume))
|
||||
(sb-sys:interactive-interrupt ()
|
||||
(sb-ext:exit))))))
|
||||
(format t "Usage: $0 [info] [warning] [error]~%"))
|
||||
|
||||
EOF
|
Loading…
Reference in New Issue
Block a user