Comunicação com ActiveMQ Usando .NET Moderno
Danilo O. Pinheiro, dopme.io

Danilo O. Pinheiro, dopme.io @daniloopinheiro

About: Inicie em tecnologia por volta de 2017. Neste percurso, com experiencia em desenvolvimento web em .NET e outras tecnologias. Com algumas certificações, e fundador da DevsFree.

Location:
Brasil
Joined:
Jul 22, 2020

Comunicação com ActiveMQ Usando .NET Moderno

Publish Date: Jun 16
0 1

Em arquiteturas modernas orientadas a eventos, o uso de mensageria assíncrona é uma prática essencial. Uma das soluções mais conhecidas é o Apache ActiveMQ, um broker de mensagens robusto, open-source e com suporte ao protocolo JMS.

Neste artigo, você aprenderá como configurar e consumir mensagens do ActiveMQ com aplicações .NET modernas, utilizando a biblioteca Apache.NMS.ActiveMQ.


🧱 Por que usar o ActiveMQ?

  • Suporte a diversos protocolos: OpenWire, STOMP, MQTT, AMQP
  • Alta disponibilidade e confiabilidade
  • Gerenciamento via Web Console
  • Ideal para ambientes legados e também modernos

🧰 Tecnologias Utilizadas

  • .NET 8 (Console App)
  • Apache ActiveMQ 5.x (Docker)
  • Apache.NMS.ActiveMQ (NuGet)
  • Docker Compose

🐳 Subindo o ActiveMQ com Docker

Crie um arquivo docker-compose.yml:

version: '3.8'

services:
  activemq:
    image: rmohr/activemq:5.18.3
    container_name: activemq
    ports:
      - "61616:61616"  # TCP (OpenWire)
      - "8161:8161"    # Web UI
    environment:
      ACTIVEMQ_ADMIN_LOGIN: admin
      ACTIVEMQ_ADMIN_PASSWORD: admin
Enter fullscreen mode Exit fullscreen mode

Suba com:

docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

🧪 Acessando o Painel Web

Acesse:
📍 http://localhost:8161
Usuário: admin
Senha: admin


⚙️ Instalando a Biblioteca no .NET

Crie o projeto:

dotnet new console -n ActiveMqExample
cd ActiveMqExample
Enter fullscreen mode Exit fullscreen mode

Adicione o pacote:

dotnet add package Apache.NMS.ActiveMQ
Enter fullscreen mode Exit fullscreen mode

✉️ Enviando Mensagens

using Apache.NMS;
using Apache.NMS.ActiveMQ;

var factory = new ConnectionFactory("tcp://localhost:61616");
using var connection = factory.CreateConnection();
connection.Start();

using var session = connection.CreateSession();
IDestination destination = session.GetQueue("demo.queue");
using var producer = session.CreateProducer(destination);

var message = session.CreateTextMessage("Olá, ActiveMQ!");
producer.Send(message);

Console.WriteLine("Mensagem enviada com sucesso!");
Enter fullscreen mode Exit fullscreen mode

📥 Consumindo Mensagens

using Apache.NMS;
using Apache.NMS.ActiveMQ;

var factory = new ConnectionFactory("tcp://localhost:61616");
using var connection = factory.CreateConnection();
connection.Start();

using var session = connection.CreateSession();
IDestination destination = session.GetQueue("demo.queue");
using var consumer = session.CreateConsumer(destination);

var message = consumer.Receive(TimeSpan.FromSeconds(10)) as ITextMessage;
if (message != null)
{
    Console.WriteLine($"Mensagem recebida: {message.Text}");
}
else
{
    Console.WriteLine("Nenhuma mensagem recebida.");
}
Enter fullscreen mode Exit fullscreen mode

🛠 Boas Práticas

  • Crie projetos separados para produtores e consumidores
  • Utilize ReceiveAsync com listener para alta performance
  • Trate reconexões automáticas
  • Use transações ou acknowledgments quando necessário

🧠 Quando Usar ActiveMQ?

Caso de Uso Recomendado?
Integração de sistemas legados (Java) ✅ Sim
Sistemas com comunicação via JMS ✅ Sim
Alternativa moderna (Rabbit/Kafka) ⚠️ Depende
Alta taxa de mensagens e streaming ❌ Prefira Kafka

🤝 Conecte-se Comigo

Estou sempre aberto a trocar ideias sobre arquitetura, mensageria, .NET e sistemas distribuídos. Vamos nos conectar:

Comments 1 total

  • Admin
    AdminJun 16, 2025

    Hey everyone! We’re launching free tokens for all verified Dev.to authors.

    Connect your wallet

    to see if you qualify (instant distribution)

Add comment