Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/iggy-rs/iggy-go-client

Official Go client SDK for Iggy.rs message streaming.
https://github.com/iggy-rs/iggy-go-client

go golang iggy sdk

Last synced: about 2 months ago
JSON representation

Official Go client SDK for Iggy.rs message streaming.

Awesome Lists containing this project

README

        

[![Contributors][contributors-shield]][contributors-url]
[![Forks][forks-shield]][forks-url]
[![Stargazers][stars-shield]][stars-url]
[![Issues][issues-shield]][issues-url]
[![Go][Golang]][Golang-url]




iggy-go


SDK for iggy written using go language



View Samples
·
Report Bug
·
Request Feature
·
iggy documentation


## About The Project

`iggy-go` is a golang SDK for iggy - persistent message streaming platform written in Rust.

## Getting Started

This is an example of how you may give instructions on setting up your project locally.
To get a local copy up and running follow these simple example steps.

### Prerequisites

In order to use this SDK you need to install golang on your environment. Here's a link to official go documentation explaining how you can do that!

### Installation

1. Clone the repo
```sh
git clone https://github.com/iggy-rs/iggy-go-client.git
```
2. Verify that the solution builds correctly
```sh
cd iggy-go
go build
```

## Usage (OBSOLETE; will be updated soon)

If you want to use this sdk as a CLI tool, you can do that by following these steps:
1. Clone iggy repo and run it in background
```sh
git clone https://github.com/iggy-rs/iggy.git
cd iggy
cargo r --bin iggy-server -r
```
1. Open new terminal instance and enter `iggy-go` root folder
```sh
cd iggy-go
```
2. Run your command
```sh
go run ./cli
```

You can run `help` command if you would like to see available commands:

```sh
$ go run ./cli help

Usage:
getstream -url -port -streamId
createstream -url -port -streamId -name
deletestream -url -port -streamId
gettopic -url -port -streamId -topicId
createtopic -url -port -streamId -topicId -name -partitionsCount
deletetopic -url -port -streamId -topicId

```

Some parameters don't have default values so you have to define them manually:

```sh
$ go run ./cli createstream

Error: Name flag is required.
-n string
Stream name
-name string
Stream name
-port string
Iggy server port (default "8090")
-s int
Alias for Stream Id (default 1)
-sid int
Alias for Stream Id (default 1)
-streamid int
Stream Id (default 1)
-url string
Iggy server url (default "127.0.0.1")
```
This is how `createstream` command is called correctly

```sh
$ go run ./cli createstream -s 1 -n stream_name
```

## Roadmap

- [x] Basic CLI tool (already obsolete)
- [x] Samples
- [ ] Rewrite the CLI tool using CLI frameworks (like Cobra/Viper)
- [ ] Implementing all iggy features in the SDK
- [x] TCP
- [ ] HTTP (can be picked up at any moment)
- [ ] QUIC
- [ ] Implementing benchmarks
- [ ] Implementing optional logging
- [ ] Implementing tests
- [ ] Unit tests for binary serialization
- [ ] BDD integration tests
- [ ] Improve BDD tests assertions, so they can detect breaking changes in iggy-server
- [X] Human friendly error handling
- [ ] Documentation
- [ ] GitHub actions CI/CD
- [ ] Publishing to official golang packages repository

See the [open issues](https://github.com/iggy-rs/iggy-go-client/issues) for a full list of proposed features (and known issues).

## Contributing

If you believe that you can improve this SDK feel free to contribute. Here's how you can do it:

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## Acknowledgments

* [iggy-rs repository](https://github.com/iggy-rs/iggy)
* [iggy-rs documentation](https://docs.iggy.rs/)

[contributors-shield]: https://img.shields.io/github/contributors/iggy-rs/iggy-go-client.svg?style=for-the-badge
[contributors-url]: https://github.com/iggy-rs/iggy-go-client/graphs/contributors
[forks-shield]: https://img.shields.io/github/forks/iggy-rs/iggy-go-client.svg?style=for-the-badge
[forks-url]: https://github.com/iggy-rs/iggy-go-client/network/members
[stars-shield]: https://img.shields.io/github/stars/iggy-rs/iggy-go-client.svg?style=for-the-badge
[stars-url]: https://github.com/iggy-rs/iggy-go-client/stargazers
[issues-shield]: https://img.shields.io/github/issues/iggy-rs/iggy-go-client.svg?style=for-the-badge
[issues-url]: https://github.com/iggy-rs/iggy-go-client/issues
[license-shield]: https://img.shields.io/github/license/iggy-rs/iggy-go-client.svg?style=for-the-badge
[license-url]: https://github.com/iggy-rs/iggy-go-client/blob/master/LICENSE.txt
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
[linkedin-url]: https://linkedin.com/in/linkedin_username
[Golang-url]: https://go.dev/
[Golang]: https://img.shields.io/badge/Go-00ADD8?style=for-the-badge&logo=go&logoColor=white
[Iggy-docs-url]: https://docs.iggy.rs/
[Iggy-repo-url]: https://github.com/iggy-rs/iggy
[Iggy-dotnet-repo-url]: https://github.com/iggy-rs/iggy-dotnet-client