ActiveMQ com Spring Boot – Iniciando com esse Broker JMS

Compartilhar:

Você já utilizou ActiveMQ com Spring Boot em algum projeto? este broker é um poderoso sistema de mensagens de código aberto que fornece uma infraestrutura flexível e escalável para a comunicação entre diferentes aplicações. Baseado no protocolo Java Message Service (JMS), o ActiveMQ facilita a troca de mensagens entre componentes de software de forma assíncrona, confiável e eficiente.

Uma das principais características do ActiveMQ é sua capacidade de suportar uma variedade de padrões de integração, incluindo mensagens ponto a ponto, publish-subscribe (publicar e assinar) e filas de mensagens.

Isso permite que as aplicações se comuniquem de maneira flexível, independentemente de estarem distribuídas em diferentes plataformas, linguagens de programação ou localizações geográficas.

activemq com spring boot

Passos de instalação do Apache ActiveMQ:

Antes de iniciar as configurações do projeto Spring Boot, precisamos baixar o ActiveMQ em nossa máquina, podemos baixar de 2 formas, pelo site oficinal do ActiveMQ ou se preferir vamos baixar uma imagem diretamente pelo Docker, seguindo os passos a seguir:

1. Baixar e executar o contêiner do ActiveMQ:

Abra um terminal ou prompt de comando e execute o seguinte comando para baixar e iniciar o contêiner do ActiveMQ:

docker run -p 61616:61616 -p 8161:8161 --name activemq webcenter/activemq:latest
  • -p 61616:61616: Mapeia a porta padrão do ActiveMQ para que seja acessível do host. A porta 61616 é a porta padrão para conexões JMS.
  • -p 8161:8161: Mapeia a porta do console web administrativo para acesso via navegador.
  • –name activemq: Define um nome para o contêiner (neste caso, “activemq”).
  • webcenter/activemq:latest: Especifica a imagem Docker usada para criar o contêiner. Esta é a imagem oficial do ActiveMQ mantida pelo Webcenter.

2. Acesso ao console Administrativo

Após executar o contêiner, você pode acessar o console administrativo do ActiveMQ no navegador da web digitando o seguinte endereço: http://localhost:8161/admin.

Use as credenciais padrão:

  • Usuário: admin
  • Senha: admin

Você irá se deparar com a pagina Home do ActiveMQ:

activemq com spring boot

Passo 3: Configurar e Usar o ActiveMQ com Java

Adicionar dependência Maven

Se você estiver usando Maven, adicione a dependência do ActiveMQ ao seu arquivo pom.xml

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.16.3</version>
</dependency>

Com a dependência geral em nosso projeto, precisamos criar um produtor de mensagens simples que enviará mensagens para uma fila do ActiveMQ:

package br.com.virandoprogramador.activemq

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;

public class MessageProducer {
    public static void main(String[] args) throws JMSException {
        // Conexão com o ActiveMQ
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();
        connection.start();

        // Criação de uma sessão
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        // Criação de uma fila de destino
        Destination destination = session.createQueue("QUEUE.NAME");

        // Criação de um produtor
        MessageProducer producer = session.createProducer(destination);

        // Criação e envio de uma mensagem
        TextMessage message = session.createTextMessage("Teste MSG - Virando Programador");
        producer.send(message);

        // Fechamento das conexões
        session.close();
        connection.close();
    }
}

A classe MessageProducer é utilizada para enviar mensagens para um destino específico (como uma fila ou um tópico) em um sistema de mensageria baseado em JMS (Java Message Service). Ela desempenha um papel fundamental na comunicação entre aplicações através do envio de mensagens para o Apache ActiveMQ ou outros sistemas de mensageria que seguem o padrão JMS.

Após enviar todas as mensagens desejadas, é uma boa prática fechar a sessão e a conexão com o sistema de mensageria utilizando os métodos close() da sessão e da conexão, para liberar os recursos adequadamente.

Agora vamos criar a classe para consumir a mensagem:

package br.com.virandoprogramador.activemq

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;

public class MessageConsumer {
    public static void main(String[] args) throws JMSException {
        // Conexão com o ActiveMQ
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();
        connection.start();

        // Criação de uma sessão
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        // Criação de uma fila de destino
        Destination destination = session.createQueue("QUEUE.NAME");

        // Criação de um consumidor
        MessageConsumer consumer = session.createConsumer(destination);

        // Recebimento e processamento de mensagens
        Message message = consumer.receive();
        if (message instanceof TextMessage) {
            TextMessage textMessage = (TextMessage) message;
            System.out.println("Mensagem recebida: " + textMessage.getText());
        }

        // Fechamento das conexões
        session.close();
        connection.close();
    }
}

Encerramento sobre o assunto

Em resumo, o ActiveMQ opera utilizando filas (queues) e tópicos (topics) para o envio e recebimento de mensagens, seguindo o modelo ponto a ponto e o modelo publish-subscribe (publicar e assinar), respectivamente.

5/5 - (1 vote)
Compartilhar:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *