All Projects → snapp-incubator → stan-js-replicator

snapp-incubator / stan-js-replicator

Licence: GPL-3.0 License
replicate messages from streaming channel to jetstream

Programming Languages

go
31211 projects - #10 most used programming language
Smarty
1635 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to stan-js-replicator

envoy-nats-streaming
No description or website provided.
Stars: ✭ 28 (+100%)
Mutual labels:  nats, nats-streaming, nats-messaging
natsclient
NATS 2.x Client Library
Stars: ✭ 37 (+164.29%)
Mutual labels:  nats, nats-streaming, nats-messaging
nats-connector-spark
A Spark Publish/Subscribe NATS Connector
Stars: ✭ 24 (+71.43%)
Mutual labels:  nats, nats-streaming, nats-messaging
proximo
Interoperable GRPC based publish/subscribe
Stars: ✭ 38 (+171.43%)
Mutual labels:  nats, nats-streaming
nats-surveyor
NATS Monitoring, Simplified.
Stars: ✭ 150 (+971.43%)
Mutual labels:  nats, nats-messaging
stan.rb
Ruby NATS Streaming Client
Stars: ✭ 21 (+50%)
Mutual labels:  nats, nats-streaming
nats.py2
A Tornado based Python 2 client for NATS
Stars: ✭ 62 (+342.86%)
Mutual labels:  nats
moleculer-java
Java implementation of the Moleculer microservices framework
Stars: ✭ 39 (+178.57%)
Mutual labels:  nats
your-connection-deserves-a-name
Examples and code to assign a name to your MongoDB, MySQL, NATS, Oracle, PostgreSQL, RabbitMQ, and redis connection.
Stars: ✭ 26 (+85.71%)
Mutual labels:  nats
gobench
A benchmark framework based on Golang
Stars: ✭ 50 (+257.14%)
Mutual labels:  nats
pandora
Small box of pandora to prototype your app with ready for use backend. This is just my compilation of different solutions occasionally applied in hackathons and challenges
Stars: ✭ 26 (+85.71%)
Mutual labels:  nats
rails-microservices-book
A guide to building distributed Ruby on Rails applications using Protocol Buffers, NATS and RabbitMQ
Stars: ✭ 23 (+64.29%)
Mutual labels:  nats
bifrost
Communications library & daemon for Go. Modular transports, links, pubsub (NATS), quic-over-websocket, libp2p, RPC, encryption, testing, and more.
Stars: ✭ 63 (+350%)
Mutual labels:  nats
watermill-nats
NATS Pub/Sub for the Watermill project.
Stars: ✭ 25 (+78.57%)
Mutual labels:  nats
liftbridge-api
Protobuf definitions for the Liftbridge gRPC API. https://github.com/liftbridge-io/liftbridge
Stars: ✭ 15 (+7.14%)
Mutual labels:  nats
laracom
laracom driven by go micro services
Stars: ✭ 37 (+164.29%)
Mutual labels:  nats
dokku-nats
a nats plugin for dokku
Stars: ✭ 21 (+50%)
Mutual labels:  nats
remoteAudio
Audio streaming application for Amateur Radio purposes
Stars: ✭ 121 (+764.29%)
Mutual labels:  nats
Sitko.Core
Sitko.Core is a set of libraries to help build .NET Core applications fast
Stars: ✭ 46 (+228.57%)
Mutual labels:  nats-streaming
Microservices-Nodejs-React
Applying Microservices Architecture using nodejs, MongoDB, redis, and handling async communication using nats. Deploying all these in a kubernetes cluster hosted on gcp.
Stars: ✭ 18 (+28.57%)
Mutual labels:  nats

NATS Streaming/Jetstream Replicator [SJR]

GitHub Workflow Status Codecov

Introduction

This project replicates messages from streaming channels to jetstream. but why? At Snapp when we started using the nats-streaming there was no jetstream for nats, so streaming was our only solution to have reliable delivery for important events, but now streaming is going to be deprecated as mentioned here and jetstream has new features which we will use.

Right now all of our projects use streaming and we want to have an smooth migration so with this project we can replicate events on the jetstream side then remove them from streaming side.

How it works?

It uses the configuration as below to first creates the stream on jetstream and then binds the given topics to it as subjects. then it starts subscribing on given topics from nats streaming and publishes them into jetstream. if you want to bind topics into different streams you need to run different instances of sjr.

---
monitoring:
  enabled: true
  address: ":8080"
output:
  url: "nats://127.0.0.1:4222"
logger: {}
telemetry: {}
input:
  type: "streaming"
  group: "sjr"
  streaming:
    url: "nats://127.0.0.1:4222"
    clientid: "snapp"
channel: "koochooloo"
topics:
  - k.1
  - k.2
stream:
  maxage: "1h"
  storagetype: 1
  replicas: 1

Pyroscope

sjr has buitin support for pyroscope and you can use by enabling it throuth the following configuration.

telemetry:
  profiler:
    enabled: true
    address: http://127.0.0.1:4040

Tracing with OpneTelemetry

sjr inject its context into the jetstream messages. right now we don't support context extraction from streaming messages because there is no standard way to do that.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].