Adiciona uma exchange no RabbitMQ

O método AddExchangeRabbitMQ da plataforma Devprime é utilizado para criar uma nova exchange no RabbitMQ. Este método oferece suporte para diversos tipos de exchange, incluindo Direct, Fanout, Topic e Headers, permitindo uma configuração flexível do roteamento de mensagens. Além disso, permite a configuração personalizada de propriedades da exchange através da classe CustomExchangeProperties.

Parâmetros

  • alias (string): Parâmetro opcional com o nome do Stream Alias conforme definido na configuração do Stream Adapter. O valor padrão é “Stream1”.

  • exchangeName (string): Nome da exchange. Este é o identificador único da exchange no RabbitMQ.

  • exchangeType (ExchangeType): Tipo da exchange, que pode ser um dos seguintes:

    • Direct: Roteia mensagens para filas que possuem uma chave de roteamento exata.
    • Fanout: Roteia mensagens para todas as filas ligadas à exchange.
    • Topic: Roteia mensagens para filas com base em padrões de chave de roteamento.
    • Headers: Roteia mensagens com base em cabeçalhos de mensagem.
  • customProperties (CustomExchangeProperties, opcional): Propriedades adicionais para configurar a exchange. A classe CustomExchangeProperties permite especificar:

    • Durable (bool): Define se a exchange deve ser durável. O padrão é true.
    • AutoDelete (bool): Define se a exchange deve ser excluída automaticamente quando não houver filas ligadas. O padrão é false.
    • Arguments (IDictionary<string, object>): Argumentos adicionais para configuração específica da exchange. Pode ser null se não houver argumentos adicionais.

Retorno

  • bool: Retorna true se a exchange for criada com sucesso; caso contrário, retorna false.

Aqui estão exemplos de como usar o método AddExchangeRabbitMQ com e sem propriedades personalizadas:

1. Criação de uma exchange do tipo Direct sem propriedades personalizadas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// Criação de uma exchange do tipo Direct
var exchangeName = "myExchangeName";
var success = Dp.Stream.AddExchangeRabbitMQ(exchangeName,ExchangeType.Direct,null);
if (success)
{
    Console.WriteLine("Exchange criada com sucesso.");
}
else
{
    Console.WriteLine("Falha ao criar a exchange.");
}

2. Criação de uma exchange do tipo Topic com propriedades personalizadas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
var exchangeName = "myExchangeName";
var properties = new CustomExchangeProperties
    {
        Durable = true, // Explicitly durable
        AutoDelete = false, // Do not auto-delete
        Arguments = new Dictionary<string, object>
        {
            { "x-message-ttl", 60000 }, // Message time-to-live in milliseconds
            { "x-max-length", 1000 }    // Maximum number of messages in the queue
        }
    };
var success = Dp.Stream.AddExchangeRabbitMQ(exchangeName, ExchangeType.Direct, properties);

Considerações

  • Certifique-se de que o exchangeName seja único dentro do RabbitMQ para evitar conflitos.
  • Escolha o exchangeType adequado com base na sua estratégia de roteamento de mensagens.
  • Utilize CustomExchangeProperties para configurar comportamentos avançados, como durabilidade, exclusão automática e argumentos específicos.
  • As implementações nativas do RabbitMQ são específicas para essa plataforma e atendem a casos de uso particulares. Caso você migre para outra plataforma de streaming, será necessário ajustar seu código para usar os métodos padrão da Devprime ou os métodos específicos da nova plataforma.
Última modificação September 10, 2024 (6166aa4f)