Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Java e Nodejs

Boa noite,

Seria viável o meu produtor de mensagens estar em java com springboot e o consumidor ser um microfrontend em js (react)? O produtor enviaria uma mensagem avisando que uma nova notificação ocorreu para um veículo e enviaria o id do veículo por exemplo. E no front, aparecia uma tag informando que há uma nova informação para aquele veículo (e o usuário deve atualizar a página) por exemplo.

2 respostas
solução!

Olá, Ladiene!

É possível sim ter um produtor de mensagens em Java com Spring Boot e um consumidor em JavaScript (React). O RabbitMQ é uma ótima opção para implementar a comunicação entre esses dois componentes.

No seu caso, o produtor em Java com Spring Boot seria responsável por enviar uma mensagem para o RabbitMQ informando que uma nova notificação ocorreu para um veículo, juntamente com o ID do veículo. O consumidor em JavaScript (React) ficaria responsável por receber essa mensagem e exibir uma tag informando que há uma nova informação para aquele veículo.

Para implementar essa solução, você pode utilizar a biblioteca amqplib no lado do consumidor em JavaScript para se conectar ao RabbitMQ e receber as mensagens. Já no lado do produtor em Java com Spring Boot, você pode utilizar a biblioteca spring-amqp para enviar as mensagens para o RabbitMQ.

Aqui está um exemplo básico de como seria a implementação do consumidor em JavaScript (React) utilizando a biblioteca amqplib:

const amqp = require('amqplib');

async function consumeMessages() {
  const connection = await amqp.connect('amqp://localhost');
  const channel = await connection.createChannel();
  const queue = 'notificacoes';

  await channel.assertQueue(queue);
  await channel.consume(queue, (message) => {
    const notification = JSON.parse(message.content.toString());
    console.log(`Nova notificação para o veículo ${notification.id}`);
    // Atualizar a página ou exibir uma tag informando a nova informação
    channel.ack(message);
  });
}

consumeMessages().catch(console.error);

E no lado do produtor em Java com Spring Boot, você pode utilizar a anotação @RabbitListener para receber as mensagens do RabbitMQ. Aqui está um exemplo básico:

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class NotificationConsumer {

    @RabbitListener(queues = "notificacoes")
    public void receiveMessage(Notification notification) {
        System.out.println("Nova notificação para o veículo " + notification.getId());
        // Enviar a notificação para o frontend ou algum outro processamento
    }
}

Lembre-se de configurar corretamente a conexão com o RabbitMQ tanto no consumidor quanto no produtor.

Espero ter ajudado e bons estudos!

Obrigada!!!!!!