pub: Pipe stdin to a redis pub/sub channel

[ bsd3, program, utility ] [ Propose Tags ]

pub is an executable for piping data from stdin to a specified Redis pub/sub channel.

A typical use for this tool is to tail a log file, match a specific line with grep, and pipe it into Redis where multiple consumers can do something different with each incoming log line:

tail -F /var/log/somelogfile.log | grep "tracker.gps.parsed" | pub loglines

It also comes with a utility named sub for piping from a Redis pub/sub channel to stdout:

sub loglines | grep "somemsg"

[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 1.0.0, 1.0.1, 2.0.0, 2.0.1, 2.0.2, 3.0.0
Dependencies base (>=4.9 && <5), bytestring (>=0.10.8.1 && <0.11), hedis (>=0.9.5 && <1.0), optparse-generic (>=1.1.5 && <2.0), pipes (>=4.1.9 && <5.0), pipes-bytestring (>=2.1.4 && <3.0), text (>=1.2.2.1 && <2.0) [details]
License BSD-3-Clause
Author Parnell Springmeyer <parnell@digitalmentat.com>
Maintainer Parnell Springmeyer <parnell@digitalmentat.com>
Category Utility
Source repo head: git clone https://github.com/ixmatus/pub
Uploaded by ParnellSpringmeyer at 2017-05-29T03:34:02Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables sub, pub
Downloads 4308 total (19 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2017-05-29 [all 3 reports]

Readme for pub-3.0.0

[back to package description]

Welcome!

Hackage: Pub Build Status: Pub

The pub utility publishes input from stdin to a redis channel and the sub utility consumes from a redis channel, writing to stdout.

Quickstart

Publishing to Redis from stdin is easy with the pub utility:

$ pub --help
Pipe stdin to a redis pub/sub channel

Usage: pub --channel TEXT [--host STRING] [--port INTEGER] [--db INTEGER]
           [--version]

Available options:
  -h,--help                Show this help text
  --channel TEXT           Redis channel to publish to
  --host STRING            Redis host (default: localhost)
  --port INTEGER           Redis post (default: 6379)
  --db INTEGER             Redis db (default: 0)

$ journalctl -f nginx.service | pub --channel "nginx-loglines"

and subscribing to Redis channels and piping to stdout is also easy with the sub utility:

$ sub --help
Subscribe to redis channels and pipe to stdout

Usage: sub [--channel TEXT]... [--host STRING] [--port INTEGER] [--db INTEGER]
           [--version]

Available options:
  -h,--help                Show this help text
  --channel TEXT...        Redis channel(s) to subscribe to
  --host STRING            Redis host (default: localhost)
  --port INTEGER           Redis post (default: 6379)
  --db INTEGER             Redis db (default: 0)

$ sub --channel "nginx-loglines" --channel "haproxy-loglines" # This subscribes to both redis channels

Building

You can build multiple ways:

  • stack build
  • cabal build
  • nix-build --not-out-link -A pub release.nix
  • nix-shell -A pub.env release.nix