On 29 Jun 2021, at 15:50, Esteban Maringolo <emaringolo@gmail.com> wrote:
Hi Sven,
I thought about both RabittMQ and MQTT too.
For RabittMQ I noticed you provide a docker config to get a container running quickly.
That was done for GitHub action testing, by Santiago, you could indeed (re)use part of that.
What is the easy-go solution for MQTT?
Installing mosquitto is very simple, just apt install. See also the GitHub action. There is much to say about both, you can find lots of information on the internet on how to configure these services, getting started is quite easy.
Regards!
Esteban A. Maringolo
On Tue, Jun 29, 2021 at 3:15 AM Sven Van Caekenberghe <sven@stfx.eu> wrote:
Hi Esteban,
On 29 Jun 2021, at 04:55, Esteban Maringolo <emaringolo@gmail.com> wrote:
Hi,
I'm rearchitecting a web app to perform updates only when necessary (instead of computing them all the time) on each request, I can have a global announcer and subscribers to know when to update within an image, but is there a way to have something like that but for inter-image coordination?
I'd only need to communicate the id and the class name (or a similar identifier), so on other images they'll update accordingly, and if there is an update in one image, it will notify the other images. The common data is on the database, so this is just to avoid re-reading a lot of things.
Is a message queue a good fit for this? Pub/Sub? What is available in Pharo that works without having to set up a lot of things?
Thanks!
Esteban A. Maringolo
RabbitMQ (for which there is the STOMP client 'STAMP' https://github.com/svenvc/stamp) is one option, but it is a bit more complex.
I guess Redis would work too (https://medium.com/concerning-pharo/quick-write-me-a-redis-client-5fbe4ddfb1...).
More recently I have been using MQTT (with the client https://github.com/svenvc/mqtt) which is much simpler.
You post a message on a topic and have one or more listeners see it. You can even arrange for the broker to keep the messages you miss (within a reasonable window) - which is very nice for all kinds of reasons (especially operational). I have a system in production that uses this mechanism to coordinate different images (and handle ingress of data) for more than a year now.
Sven