jollopre / harmoniser Goto Github PK
View Code? Open in Web Editor NEWA minimalistic approach to interact with RabbitMQ
License: MIT License
A minimalistic approach to interact with RabbitMQ
License: MIT License
The Open Telemetry initiative has defined a set of semantic conventions to address messaging operations.
We would like to provide all the minimum and necessary data for publish/consume through harmoniser thats permits an easy collection of telemetry data through external agents such as Honeycomb, NR or the like.
on_delivery
method is definedon_cancellation
from rabbitMQThe existing Harmoniser::Publisher creates connection/channel/exchange right when harmoniser_publisher
class method gets called. Since we want to avoid all sort of problems related to pre-fork servers like unicorn, passenger, we believe is better to defer the resources creation until the first publication wants to be made.
We'd like to introduce the concept of Topology into harmoniser, so that we can explicitly configure:
This should simplify the building of Publisher/Consumer since it will be assumed that exchanges/queues/bindings are already defined.
We'd like to have a dedicated channel for each publisher/subscriber class. Some of the reason described below:
We'd like to introduce CI github action containing capturing the following:
This action should be triggered anytime push to branch happen or PR is opened. Consider including also:
The existing Harmoniser::Subscriber creates connection/channel/queue right when harmoniser_subscriber class method gets called. Since we want to avoid all sort of problems related to pre-fork servers like unicorn, passenger, we believe is better to defer the resources creation until the consumption starting is marked explicitly
The existing signal handler only takes place when harmoniser is the main process, however, during the process of reading the require file, a Harmoniser.connection
could happen. If there are errors trying to connect, the connection is attempted forever unless a SignalException is received, see here.
This code could become problematic when the exit is instructed if:
bundle exec harmoniser
was not launched andIn order to prevent this scenario, we'd like to make sure that ONLY exit is instructed when harmoniser is the main process, otherwise and under the event of capturing SignalException, we are going to raise it again.
We would like to introduce a functionality that allows publishing messages into RabbitMQ exchanges. This functionality should:
Our first approach to perform data sync with publisher/subscribers passes by using a message broker, concretely rabbitmq. We would like to have things in place such as:
We'd like to offer default options for:
Also, make sure that connection is close regardless whether or not Harmoniser is used as a Ruby separated process or not.
We'd like to update the README to explain:
Offer a CLI for running harmoniser in the background
Instead of passing a Bunny instance, we prefer to pass a hash of options, that map with the options available to instantiate Bunny::Session class. This will allow us to better control the following:
The existing connection to RabbitMQ performed here does not have retry in place for when the server is not available.
Although an established connection is properly handling re-connection, it is true that under failure for connection, the process can be break.
We would like to introduce a retry strategy for connection establishment so that harmoniser can have:
In order to better debug an application when errors occur at:
We'd like to introduce default handler for the above mentioned scenarios.
NOTE: Ideas to structure the content can be taken from Bunny guides
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.