Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/beautydate/grpc-kit
GRPC toolkit for microservices
https://github.com/beautydate/grpc-kit
grpc grpc-kit grpc-toolkit microservice ruby
Last synced: 3 months ago
JSON representation
GRPC toolkit for microservices
- Host: GitHub
- URL: https://github.com/beautydate/grpc-kit
- Owner: beautydate
- License: mit
- Created: 2017-02-09T13:58:07.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-08-18T21:32:24.000Z (over 7 years ago)
- Last Synced: 2024-09-17T13:59:55.246Z (5 months ago)
- Topics: grpc, grpc-kit, grpc-toolkit, microservice, ruby
- Language: Ruby
- Size: 19.5 KB
- Stars: 4
- Watchers: 15
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# GRPC::Kit
GRPC toolkit for microservices
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'grpc-kit'
```And then execute:
$ bundle
Or install it yourself as:
$ gem install grpc-kit
## Documentation
- [`GRPC::Kit::Communication::Resilient`](#grpckitcommunicationresilient)
- [`GRPC::Kit::Logger`](#grpckitlogger)
- [`GRPC::Kit::Queue::Publisher`](#grpckitqueuepublisher)
- [`GRPC::Kit::Queue::Worker`](#grpckitqueueworker)### GRPC::Kit::Communication::Resilient
Sometimes, GRPC and Google::Cloud raises _unavailable error_, but you can retry and all works fine. Based on [Datastore documentation](https://cloud.google.com/appengine/articles/handling_datastore_errors#timeouts-due-to-datastore-issues) we implemented a _helper_ for _resilient communication_.
Example:
```ruby
pubsub = Google::Cloud::Pubsub.new
topic = pubsub.create_topic('topic_name')
topic.publish('message') # receives Google::Cloud::UnavailableError# But you can uses resilient communication
include GRPC::Kit::Communication::Resilient
topic = resilient { topic.publish('message') }# And you can sets the limit of repetition...
topic = resilient(limit: 5) { topic.publish('message') }
```### GRPC::Kit::Logger
By default all logs sent to `GRPC.logger` are ignored. But `GRPC::Kit::Logger` automatically configures logs to use _STDOUT_.
### GRPC::Kit::Queue::Publisher
To publish a message to topic (creating one if none exists) you only need to configure environment variables for `Google::Cloud::Pubsub` and use:
```ruby
GRPC::Kit::Queue::Publisher.publish('topic_name', 'message')
```### GRPC::Kit::Queue::Worker
Create a class in `lib/workers` including `GRPC::Kit::Queue::Worker`:
```ruby
# lib/workers/my_worker.rb
class MyWorker
include GRPC::Kit::Queue::Workerdef initialize(msg)
@msg = msg
enddef call
puts @msg.data
@msg.ack!
end
end
```And you can use:
```bash
# to list available workers
grpc-kit workers list
# to run a worker
grpc-kit workers runner MyWorker topic_name
```## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/b2beauty/grpc-kit.
## License
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).