status: alpha, still a work in progress
This is a very simple implementation of a NATS client for Racket at the moment, implementation would change a lot.
Currently basic subscriptions and publishing of messages work as follows:
#lang racket
(require "../nats.rkt")
(define worker-response "{\"result\":~a}~n")
(define nats-io (nats-connect #:host "127.0.0.1" #:port 4222))
(printf "Subscribing to 'workers.double ~n")
(nats-sub "workers.double"
(lambda (msg)
(define result (* 2 (string->number (bytes->string/utf-8 msg))))
(nats-pub "workers.results" (format worker-response result) nats-io)) nats-io)
- [ ] Implement inboxes for the request pattern
- [ ] Reconnect and graceful failures
- [ ] Convert into a module
- [ ] Logging facilities
- [ ] Add testing framework
- [ ] Cluster mode
- [X] Authentication
;;
;; (The MIT License)
;;
;; Copyright (c) 2015 Waldemar Quevedo. All rights reserved.
;;
;; Permission is hereby granted, free of charge, to any person
;; obtaining a copy of this software and associated documentation
;; files (the "Software"), to deal in the Software without
;; restriction, including without limitation the rights to use, copy,
;; modify, merge, publish, distribute, sublicense, and/or sell copies
;; of the Software, and to permit persons to whom the Software is
;; furnished to do so, subject to the following conditions:
;;
;; The above copyright notice and this permission notice shall be
;; included in all copies or substantial portions of the Software.
;;
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
;; SOFTWARE.
;;