All Projects → 66Origin → nitox

66Origin / nitox

Licence: Apache-2.0, MIT licenses found Licenses found Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT
Tokio-based async NATS client

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to nitox

graphql-nats-subscriptions
A graphql subscriptions implementation using nats and apollo's graphql-subscriptions
Stars: ✭ 27 (-55%)
Mutual labels:  nats
rs-nuid
NATS unique identifiers
Stars: ✭ 19 (-68.33%)
Mutual labels:  nats
fuso
一款体积小, 快速, 稳定, 高效, 轻量的内网穿透, 端口转发工具 支持多连接,级联代理,传输加密 (A small volume, fast, stable, efficient, and lightweight intranet penetration, port forwarding tool supports multiple connections, cascading proxy, and transmission encryption)
Stars: ✭ 1,132 (+1786.67%)
Mutual labels:  tokio
hyper-proxy
A proxy connector for Hyper-based crates
Stars: ✭ 73 (+21.67%)
Mutual labels:  tokio
ldap3
A pure-Rust LDAP library using the Tokio stack
Stars: ✭ 161 (+168.33%)
Mutual labels:  tokio
gobench
A benchmark framework based on Golang
Stars: ✭ 50 (-16.67%)
Mutual labels:  nats
fubuki
Simple VPN implemented using rust
Stars: ✭ 85 (+41.67%)
Mutual labels:  tokio
watermill-nats
NATS Pub/Sub for the Watermill project.
Stars: ✭ 25 (-58.33%)
Mutual labels:  nats
abstract-ns
Abstract name service traits for rust
Stars: ✭ 17 (-71.67%)
Mutual labels:  tokio
console
a debugger for async rust!
Stars: ✭ 2,101 (+3401.67%)
Mutual labels:  tokio
tokio-imap
Tokio-based IMAP implementation
Stars: ✭ 110 (+83.33%)
Mutual labels:  tokio
go-nats-examples
Single repository for go-nats example code. This includes all documentation examples and any common message pattern examples.
Stars: ✭ 99 (+65%)
Mutual labels:  nats
dokku-nats
a nats plugin for dokku
Stars: ✭ 21 (-65%)
Mutual labels:  nats
delay-timer
Time-manager of delayed tasks. Like crontab, but synchronous asynchronous tasks are possible scheduling, and dynamic add/cancel/remove is supported.
Stars: ✭ 257 (+328.33%)
Mutual labels:  tokio
moleculer-java
Java implementation of the Moleculer microservices framework
Stars: ✭ 39 (-35%)
Mutual labels:  nats
swir
SWIR - Sidecar Written In Rust
Stars: ✭ 49 (-18.33%)
Mutual labels:  nats
pixelpwnr-server
🎆 Blazingly fast GPU accelerated pixelflut server written in Rust.
Stars: ✭ 43 (-28.33%)
Mutual labels:  tokio
nano-rs
An implementation of Nano in Rust using Tokio
Stars: ✭ 29 (-51.67%)
Mutual labels:  tokio
nats.py2
A Tornado based Python 2 client for NATS
Stars: ✭ 62 (+3.33%)
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 (-56.67%)
Mutual labels:  nats

Nitox - Tokio-based async NATS client

Crates.io docs.rs

Description

Nitox is a tokio-based client for NATS. We wrote it because the existing library is sync and does not fit our needs.

A lot of features are currently missing, so feel free to contribute and help us building the best Async NATS client ever!

Missing features:

  • Find a way to integration test the reconnection mechanism - but it has actually been hand-tested and works
  • Auto-pruning of subscriptions being unsubscribed after X messages - It's actually a bug, since a stream stays open albeit sleeping
  • Handle verbose mode
  • Handle pedantic mode - Should work OOB since we're closely following the protocol (Edit: it does)
  • Switch parsing to using nom - We're not sure we can handle very weird clients; we're fine talking to official ones right now
  • Add support for NATS Streaming Server - Should be pretty easy with prost since we already have the async architecture going on

There's a small extra in the tests/ folder, some of our integration tests rely on a custom NATS server implemented with tokio that only implements a subset of the protocol to fit our needs for the integration testing.

Documentation

Here: http://docs.rs/nitox

Installation

[dependencies]
nitox = "0.1"

Usage

extern crate nitox;
extern crate futures;
use futures::{prelude::*, future};
use nitox::{NatsClient, NatsClientOptions, NatsError, commands::*};

fn connect_to_nats() -> impl Future<Item = NatsClient, Error = NatsError> {
    // Defaults as recommended per-spec, but you can customize them
    let connect_cmd = ConnectCommand::builder().build().unwrap();
    let options = NatsClientOptions::builder()
        .connect_command(connect_cmd)
        .cluster_uri("127.0.0.1:4222")
        .build()
        .unwrap();

    NatsClient::from_options(options)
        .and_then(|client| {
            // Makes the client send the CONNECT command to the server, but it's usable as-is if needed
            client.connect()
        })
        .and_then(|client| {
            // Client has sent its CONNECT command and is ready for usage
            future::ok(client)
        })
}

License

Licensed under either of these:

Why "Nitox"

Standing for Nitric Oxide, an important chemical involved in communication between neurons; It's highly related to the acronym behind NATS, and you should ask the team behind it for the meaning! (or look in the git history of gnatsd's repo)

What is NATS

NATS Server is a simple, high performance open source messaging system for cloud native applications, IoT messaging, and microservices architectures.

More details at NATS.io

Yellow Innovation

Yellow Innovation is the innovation laboratory of the French postal service: La Poste.

We create innovative user experiences and journeys through services with a focus on IoT lately.

Yellow Innovation's website and works

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].