AEON Broker Manager issueshttps://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues2019-01-14T04:51:32Zhttps://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/1Broker-Manager implemented with other amqp library2019-01-14T04:51:32ZJavier Garcia HernandezBroker-Manager implemented with other amqp libraryWe know that the nodejs library, to connect amqp, that we selected.... it is not the best current option. Actually, our option is discontinued (abandoned) and we are having some issues (specially managing reconnections).
It could be g...We know that the nodejs library, to connect amqp, that we selected.... it is not the best current option. Actually, our option is discontinued (abandoned) and we are having some issues (specially managing reconnections).
It could be good to implement event-manager using a better library. Amqp.node (also known as amqplib) and bramqp are the best options:
http://stackoverflow.com/questions/20128124/amqp-vs-amqplib-which-node-js-amqp-client-library-is-better0.4.0Elisa HerrmannElisa Herrmannhttps://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/3Functional tests2019-01-14T04:51:32ZJosé Gato LuisFunctional testsTo implement functional tests of broker manager library. This will be used in our CI workflow.To implement functional tests of broker manager library. This will be used in our CI workflow.0.4.0https://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/5update examples2019-01-14T04:51:32ZJosé Gato Luisupdate examplesWhen finished the implementation, update examples. This will be similar to what we have to do in the other modules of AEON using the broker manager. It should be also related to functional tests #3 When finished the implementation, update examples. This will be similar to what we have to do in the other modules of AEON using the broker manager. It should be also related to functional tests #3 0.4.0https://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/6Connection, reconnection, failure tets...2019-01-14T04:51:32ZJosé Gato LuisConnection, reconnection, failure tets...What if the Rabbitmq server goes down? are the clients notified in some way? what if the server goes up? clients should be reconnected seamless ..
We dont need to create these tests programatically, we just need to put some clients pu...What if the Rabbitmq server goes down? are the clients notified in some way? what if the server goes up? clients should be reconnected seamless ..
We dont need to create these tests programatically, we just need to put some clients publishing, other subscribed. Publiserhs creating events, subscribers receiving. Manually shut down the server to see what happen. Then the server up and everything continous working. Stressing tests with multiples up and down.0.4.0José Gato LuisJosé Gato Luishttps://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/7Documentation2019-01-14T04:51:32ZJosé Gato LuisDocumentationTo document the library using Markdown formatTo document the library using Markdown format0.4.0https://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/8Connect/DIsconnect method2019-01-14T04:51:32ZJosé Gato LuisConnect/DIsconnect methodTo implement connect/disconnect methods. Importance about the different configuration option to make the connections and the errors managament.
A first version of connect/disconnect with amqp.node is [here](https://gitlab.atosresearch...To implement connect/disconnect methods. Importance about the different configuration option to make the connections and the errors managament.
A first version of connect/disconnect with amqp.node is [here](https://gitlab.atosresearch.eu/ari/aeon-broker-manager/blob/AMQP.LIB_%231/lib/brokerconnector.js) in the files publish and subscribe. There is even some documentation.0.4.0Elisa HerrmannElisa Herrmannhttps://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/9Recconect method2019-01-14T04:51:32ZJosé Gato LuisRecconect methodReconnect method will allow to automatically reconnect when the Raibbtmq server goes down.
This method is really tricky and it will imply a design decision: should we maintain the list of clients connected? to which exchanges and queu...Reconnect method will allow to automatically reconnect when the Raibbtmq server goes down.
This method is really tricky and it will imply a design decision: should we maintain the list of clients connected? to which exchanges and queues they were connected? or, should the client re-bind to exchanges and queues when everything goes again ok? The answer is not so easy... if the broker manager needs to re-create connections with exchanges and queues of the clients, implies to keep a list of clients, queues and exchanges. If we do this, our services will not be stateless!!! This will difficult a lot the horizontal scalability of AEON. What if we have three instances of the broker manager? What if requests goes to different instances? you could have created a first connection to one instance and lately you go to another that could not have you as a client.
There are ways of sharing these information through a shared data base, but it would add difficulties to implement and more points of fail. I wrote about that some time ago:
```
Dear all,
last Friday I deployed AEON in our iCargo infraestructure. One of the AEON's modules is a socket.io gateway to push notifications to the clients. Everything was ok until I enabled 2 dynos (to machines).
This raise two issues:
* Sticky sessions, all the request of a client needs to go the same dynos during the session. Not supported by heroku:
https://github.com/Automattic/engine.io/issues/261
* The two independent socket server doest not each other. So, different clients connected to the same room in different dynos will not be notified correctly. There are solutions for that, which is clustering socket.io servers:
http://socket.io/docs/using-multiple-nodes/#
http://stackoverflow.com/questions/27662575/errors-going-to-2-dynos-on-heroku-with-socket-io-socket-io-redis-rediscloud
Well, I dont know if you have experience with that, but at least I share with you these interesting articles about horizontal scaling with Socket.io
```
Maybe clients needs to do reconnection. Of course I dont mean final users, the sdk-eventsmanager would be in charge of that. The protocol between aeon clients and aeon server could have more logic, but maybe simplify the thing:
1 client subscribe to the events manager
2 events manager create the subscription
3 rabbitmq server goes down
4 events manager notify client
5 client is aware
6 events manage notify everything goes ok
7 goto 1
0.4.0https://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/10Publish method2019-01-14T04:51:31ZJosé Gato LuisPublish methodTo implement the publish method into the library.
There is a first attempt using amqp node library [here](https://gitlab.atosresearch.eu/ari/aeon-broker-manager/blob/AMQP.LIB_%231/lib/brokerconnector.js) and even [documentation](https...To implement the publish method into the library.
There is a first attempt using amqp node library [here](https://gitlab.atosresearch.eu/ari/aeon-broker-manager/blob/AMQP.LIB_%231/lib/brokerconnector.js) and even [documentation](https://gitlab.atosresearch.eu/ari/aeon-broker-manager/tree/AMQP.LIB_%231)0.4.0Elisa HerrmannElisa Herrmannhttps://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/11Subscribe method2019-01-14T04:51:31ZJosé Gato LuisSubscribe methodTo implement a subscribe method into the library
There is a first attempt using amqp node library [here](https://gitlab.atosresearch.eu/ari/aeon-broker-manager/blob/AMQP.LIB_%231/lib/brokerconnector.js) and even [documentation](https://...To implement a subscribe method into the library
There is a first attempt using amqp node library [here](https://gitlab.atosresearch.eu/ari/aeon-broker-manager/blob/AMQP.LIB_%231/lib/brokerconnector.js) and even [documentation](https://gitlab.atosresearch.eu/ari/aeon-broker-manager/tree/AMQP.LIB_%231#subscribeaeonchannel-callbackdelivermessage)0.4.0Elisa HerrmannElisa Herrmannhttps://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/12Create/Delete AEON Channel2019-01-14T04:51:31ZJosé Gato LuisCreate/Delete AEON ChannelCreate/Delete an AEON channel. Talking in RabbitMQ terms: create/delete an exchange in fanout mode.Create/Delete an AEON channel. Talking in RabbitMQ terms: create/delete an exchange in fanout mode.0.4.0https://scm.atosresearch.eu/ari/aeon-broker-manager/-/issues/20Updating Broker-Manager dependence2019-01-14T04:51:31ZJosé Gato LuisUpdating Broker-Manager dependenceNow that we have everything under CI/CD workflow. what should be do with this dependence? When the Broker-Manager is updated this generates an artifact and invoke rancher to upgrade Events Manager and AEON API. But this will not upgrade ...Now that we have everything under CI/CD workflow. what should be do with this dependence? When the Broker-Manager is updated this generates an artifact and invoke rancher to upgrade Events Manager and AEON API. But this will not upgrade the broker manager, because this is included during Docker Build. So, there will not be new Events Manager or AEON API images.
Lets keep this invoke for upgrade, in some way we will do something like that. And lets think how to really upgrade this internal dependence.0.4.0José Gato LuisJosé Gato Luis