SAP CAP + RabbitMQ: Cómo hacer que tu backend hable con colas de mensajes

¿Desacoplar CAP? ¿Que en vez de peticiones directas, se manden mensajitos por una cola y así evitar cuellos de botella? Pues hoy te voy a contar cómo integrar SAP CAP con RabbitMQ, una de las soluciones de mensajería más usadas en el mundillo. ¿Qué vamos a montar? Un proyecto SAP CAP (Node.js) Un servidor RabbitMQ local o en Docker Una integración para enviar mensajes desde CAP a una cola en RabbitMQ Opcional: un consumer para leer esos mensajes (porque está guay ver qué se recibe). Requisitos previos Node.js instalado Docker (para RabbitMQ) Proyecto CAP creado (cds init sap-cap-rabbitmq) Cliente AMQP para Node.js (usaremos amqplib) npm install amqplib Levantando RabbitMQ con Docker Si no tienes un RabbitMQ montado, en 5 segundos lo tienes: docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management La consola de administración estará en: http://localhost:15672 Usuario: guest / Contraseña: guest Integrando SAP CAP con RabbitMQ Vamos a crear un servicio en CAP que envíe mensajes a RabbitMQ. Crea un módulo JS para la conexión /srv/cat-service.js const cds = require('@sap/cds'); const amqp = require('amqplib'); module.exports = cds.service.impl(async function () { this.on('sendMessage', async (req) => { const { queue, message } = req.data; try { // Conectar a RabbitMQ const connection = await amqp.connect('amqp://localhost'); const channel = await connection.createChannel(); await channel.assertQueue(queue, { durable: false }); console.log(`

Apr 12, 2025 - 16:33
 0
SAP CAP + RabbitMQ: Cómo hacer que tu backend hable con colas de mensajes

¿Desacoplar CAP? ¿Que en vez de peticiones directas, se manden mensajitos por una cola y así evitar cuellos de botella? Pues hoy te voy a contar cómo integrar SAP CAP con RabbitMQ, una de las soluciones de mensajería más usadas en el mundillo.

¿Qué vamos a montar?

  1. Un proyecto SAP CAP (Node.js)
  2. Un servidor RabbitMQ local o en Docker
  3. Una integración para enviar mensajes desde CAP a una cola en RabbitMQ Opcional: un consumer para leer esos mensajes (porque está guay ver qué se recibe).

Requisitos previos

  1. Node.js instalado
  2. Docker (para RabbitMQ)
  3. Proyecto CAP creado (cds init sap-cap-rabbitmq)
  4. Cliente AMQP para Node.js (usaremos amqplib)
npm install amqplib

Levantando RabbitMQ con Docker

Si no tienes un RabbitMQ montado, en 5 segundos lo tienes:

docker run -d --hostname my-rabbit --name some-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3-management

La consola de administración estará en: http://localhost:15672
Usuario: guest / Contraseña: guest

Integrando SAP CAP con RabbitMQ

Vamos a crear un servicio en CAP que envíe mensajes a RabbitMQ.

  1. Crea un módulo JS para la conexión /srv/cat-service.js
const cds = require('@sap/cds');
const amqp = require('amqplib');

module.exports = cds.service.impl(async function () {

    this.on('sendMessage', async (req) => {
        const { queue, message } = req.data;

        try {
            // Conectar a RabbitMQ
            const connection = await amqp.connect('amqp://localhost');
            const channel = await connection.createChannel();
            await channel.assertQueue(queue, { durable: false });

            console.log(`