Skip to content

Latest commit

 

History

History
98 lines (73 loc) · 3.33 KB

File metadata and controls

98 lines (73 loc) · 3.33 KB
title Getting Started
type tutorial
tags
rss2msg/docs
quickstart
summary Build rss2msg and run your first one-shot and daemon polls against a feed.
updated 2026-05-30

Getting Started

Install

If you just want to run rss2msg, install a pre-built binary instead of building from source.

Homebrew (macOS):

brew install IAmBod/tap/rss2msg
rss2msg version

This pulls the cask from the project's Homebrew tap, which the release pipeline updates on every stable tag. (Homebrew Cask is macOS-only; on Linux use a package or the image below.)

Linux packages: download a .deb / .rpm / .apk for your architecture from the GitHub Releases page and install it with your package manager (e.g. sudo dpkg -i rss2msg_*_amd64.deb).

Other options: download a raw .tar.gz / .zip binary from the same Releases page, or run the container image — see Run with Docker.

To build from source instead, read on.

Build

task build               # produces ./rss2msg
task test                # unit tests (fast, no containers)
task test-integration    # adds testcontainers (Postgres, Kafka, Redis, LocalStack)
task vet                 # go vet ./...
task tidy                # go mod tidy
task                     # list all tasks

Requires Go 1.22+ and task (go install github.com/go-task/task/v3/cmd/task@latest, or brew install go-task). Integration tests require a working Docker daemon.

First run

# 1. Build
task build

# 2. Run Postgres + Kafka locally (skip what you don't need)
docker run -d --name pg    -e POSTGRES_PASSWORD=test -p 5432:5432 postgres:16-alpine
docker run -d --name kafka -p 9092:9092 confluentinc/cp-kafka:7.6.0

# 3. Tell the example config where to find Postgres
export POSTGRES_DSN="postgres://postgres:test@localhost:5432/postgres?sslmode=disable"

# 4. One-shot: poll every feed once, publish, exit
./rss2msg run-once --config examples/config.example.yaml

# 5. Inspect what landed in Postgres
psql "$POSTGRES_DSN" -c 'SELECT feed_url, item_id, kind, detected_at FROM feed_changes;'

# 6. Or run as a daemon
./rss2msg serve --config examples/config.example.yaml

Tip: to start from your own copy instead of editing the checked-in example, generate the annotated reference config and edit it in place:

./rss2msg generate-config > config.yaml   # or: generate-config -o config.yaml

The output is the same annotated reference as examples/config.example.yaml and runs as-is. See the CLI reference for -o/--force.

For SQS/SNS try LocalStack:

docker run -d --name ls -p 4566:4566 localstack/localstack:3.6
export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test
# add endpoint_url: http://localhost:4566 under each sqs/sns sink

For multi-instance coordination, see Run Multiple Instances.

Related

  • CLI — every command and flag.
  • Configure Feeds — replace the example feeds with your own.
  • Choose a Sink — send changes somewhere other than the example.