Skip to content

A redis pubsub client with keep-alive heart beats on top of the awesome com.taoensso/carmine library

License

Notifications You must be signed in to change notification settings

aravindbaskaran/redis-pubsub

Repository files navigation

[com.aravindbaskaran/redis-pubsub "0.1.1"] ; See CHANGELOG for details

Clojars Project

redis-pubsub

A redis pubsub client with keep-alive heart beats on top of the awesome com.taoensso/carmine library.

The main purpose of this library is to address the dead connections on redis pubsub clients with no way to re-subscribe or keep alive.

Related GH Issue - taoensso/carmine#15

Existing PR - taoensso/carmine#207

So until this gets merged into the main carmine library in some format, the world keeps spinning and the connections keep dying, this library has use.

Features

  • Keeps pubsub clients ALIVE :)
  • Very tiny Clojure library
  • Documented, base macros and direct subscribe API with support for Redis 3.2+
  • Tested for connection failures because of socket read timeout, hard disconnects and stale/old connects
  • Awesome underlying All-Clojure redis library in com.taoensso/carmine redis client

Usage

with-new-keepalive-pubsub-listener macro

(require '[redis-pubsub.core :as pubsub])
(require '[taoensso.carmine :as car])
(pubsub/with-new-keepalive-pubsub-listener {}
  {
   "ps-foo" #(println %) ;handle channel ps-foo, arguments passed ["message" channel-name message-string]
   "ps-baz" #(println %) ;handle channel ps-baz, arguments passed ["message" channel-name message-string]
   "pubsub:ping" #(println %) ;callback on ping, arguments passed ["pong" "pubsub:ping"]
   "pubsub:listener:fail" #(println %) ;callback on listener failures, arguments passed ["pubsub:error" "pubsub:listener:fail" exception-obj]
  }
  ; subsrcibe to required channels
  (car/subscribe "ps-foo" "ps-baz"))

subscribe API

(require '[redis-pubsub.core :as pubsub])
(pubsub/subscribe
  {}
  "ps-foo"
  #(println %) ;handle channel ps-foo, arguments passed ["message" channel-name message-string]
  )

Broader documentation of underlying carmine interfaces

License

Distributed under the EPL v1.0 (same as Clojure).
Copyright © 2018- Aravind Baskaran.

About

A redis pubsub client with keep-alive heart beats on top of the awesome com.taoensso/carmine library

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published