/racket-nats

A NATS client for Racket

Primary LanguageRacket

NATS Client for Racket

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.

Usage

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)

To do

  • [ ] Implement inboxes for the request pattern
  • [ ] Reconnect and graceful failures
  • [ ] Convert into a module
  • [ ] Logging facilities
  • [ ] Add testing framework
  • [ ] Cluster mode
  • [X] Authentication

License

;; 
;;     (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.
;;