I am looking for an alternative to Kafka for exchanging messages between several Node applications (Meteor and others).
I would like a purely JavaScript/Node service without dependencies (without Redis).
The load will be light.
Do you have any suggestions? I think I saw something about this on the forum, but I can’t find it.
Between servers or clients or both? You could use a ddp client and directly send messages via DDP between apps. It’s just a layer on top of websocket and since you want direct communication without a broker it is the easiest way. If you want message brokers then checkout RabbitMQ
could you describe better your scenario? rabbitmq, kafka, sns, ddp, service bus… all they are pretty similar but each one have your particularity that makes total difference for each scenario
This involves a “Meteor” application and several “Node” applications (which may or may not be on the server). They must communicate with each other asynchronously to delegate tasks. Currently, Kafka is used, but in my opinion, this is excessive for the traffic and features used.
Do you need messaging communication? you can call the Meteor from another Node services
Take a look in this blog post, let me know if it make sense for you
If it doesn’t work, RabbitMQ might be a better option since it provides mechanisms to guarantee message delivery. If cost is a concern, you could consider SNS instead, but you’ll need to handle request consistency.
It sounds like you might need Streamer, especially if the message exchange is volatile.
Streamer uses Node edge technology and is very lightweight. I use if for all: server-server, client-server and client-server-client notifications/messages.
You can take TS from here. If you don’t like TS I have a pre-TS version from them with some little updates and a StandardJS linting.
In your case, you would use it as is on a Meteor server and for the other Node servers you would use a DDP client, basically replicate what is in the Meteor package for a non-Meteor Node server.
Streamer uses emit inside the process, and ddp between processes / nodes / clients.