MessageStreamingReimagined
Iggy is the persistent message streaming platform written in Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing millions of messages per second.
Performance oriented
Iggy provides exceptionally high throughput and performance while utilizing minimal computing resources.This is not yet another extension running on top of the existing infrastructure, such as Kafka or SQL database. Iggy is the persistent message streaming log built from the ground up using the low lvl I/O for speed and efficiency.
Extremely efficient
Rust language guarantees the predictable resources' usage, thus, you no longer need to worry about a random GC spikes.
Multiple transports
TCP, QUIC, HTTP, or maybe all of them at once? Easily configure and enable the different transport protocols.
Advanced features
Users, partitioning, consumer groups, message deduplication, retention policy, data encryption and many more.
SDK support
Building the distributed systems might involve many programming languages, which is why, we provide different SDKs.
Management interface
Built-in terminal CLI to manage the streaming server, or maybe the modern Web UI? Why not both :)
Fully open sourced
Thanks to the power of community, we can constantly improve Iggy and support multiple programming languages SDKs.
Dedicated Web UI
Iggy.rs comes with a modern Web UI allowing you to manage all the streams, topics, users and all other server resources.
Fully-featured CLI
Dive into terminal-based workflows effortlessly with our CLI, offering comprehensive support for all tasks and operations.
Commands:
stream stream operations [aliases: s]
topic topic operations [aliases: t]
partition partition operations [aliases: p]
ping ping iggy server
me get current client info
stats get iggy server statistics
pat personal access token operations
user user operations [aliases: u]
client client operations [aliases: c]
consumer-group consumer group operations [aliases: g]
consumer-offset consumer offset operations [aliases: o]
message message operations [aliases: m]
context context operations [aliases: ctx]
login login to Iggy server [aliases: li]
logout logout from Iggy server [aliases: lo]
help Print this message or the help of the given subcommand(s)
Run 'iggy --help' for full help message.
Run 'iggy COMMAND --help' for more information on a command.
For more help on what's Iggy and how to use it, head to https://iggy.rs
Supported programming languages SDK
Building the distributed systems might involve many programming languages, which is why, we provide different SDKs.
Rust
C#
Node
Java
Go
Python
C++
Elixir
1// Create the Iggy client
2let client = IggyClient::from_connection_string("iggy://user:secret@iggy:5050")?;
3
4// Create a producer for the given stream and one of its topics
5let mut producer = client
6 .producer("dev01", "events")?
7 .batch_size(1000)
8 .send_interval(IggyDuration::from_str("1ms")?)
9 .partitioning(Partitioning::balanced())
10 .build();
11
12producer.init().await?;
13
14// Send some messages to the topic
15let messages = vec![Message::from_str("Hello Iggy.rs")?];
16producer.send(messages).await?;
17
18// Create a consumer for the given stream and one of its topics
19let mut consumer = client
20 .consumer_group("my_app", "dev01", "events")?
21 .auto_commit(AutoCommit::IntervalOrWhen(
22 IggyDuration::from_str("1s")?,
23 AutoCommitWhen::ConsumingAllMessages,
24 ))
25 .create_consumer_group_if_not_exists()
26 .auto_join_consumer_group()
27 .polling_strategy(PollingStrategy::next())
28 .poll_interval(IggyDuration::from_str("1ms")?)
29 .batch_size(1000)
30 .build();
31
32consumer.init().await?;
33
34// Start consuming the messages
35while let Some(message) = consumer.next().await {
36 // Handle the message
37}
Trusted by
Meet our early adopters who have found Iggy to be a great solution for their demands
Latest blog posts
Stay ahead with our latest updates and keep track of our progress. Follow along as we navigate through milestones and achievements.