Adiciona vinculo entre uma exchange e fila no RabbitMQ

O método AddBindingExchangeQueueRabbitMQ da plataforma Devprime é utilizado para criar uma nova ligação entre uma exchange e uma fila no RabbitMQ. Este método permite configurar o tipo de exchange, a chave de roteamento e argumentos adicionais para a ligação.

Parâmetros

  • alias (string, opcional): 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 à qual a fila será vinculada.

  • exchangeType (ExchangeType): Tipo da exchange. Pode ser:

    • Direct: Roteia mensagens para filas com 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.
  • queueName (string): Nome da fila que será vinculada à exchange.

  • routingKey (string): Chave de roteamento usada para direcionar mensagens da exchange para a fila.

  • arguments (IDictionary<string, object>, opcional): Argumentos adicionais para a ligação, como filtros ou parâmetros de configuração específicos.

Retorno

  • bool: Retorna true se a ligação entre a exchange e a fila for criada com successo; caso contrário, retorna false.

Aqui está um exemplo de como usar o método AddBindingExchangeQueueRabbitMQ na sua aplicação:

1. Efetuando um Bind de Exchange Direct sem utilizar argument

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
var exchangeName = "myExchangeName";
var queueName= "myQueueName";
var routingKey = "myQueueName";
bool success = Dp.Stream.AddBindingExchangeQueueRabbitMQ(exchangeName,
ExchangeType.Direct, queueName, routingKey, null);
    if (success)
    {
        Console.WriteLine("Bind realizado com successo.");
    }
    else
    {
        Console.WriteLine("Falha ao criar Bind.");
    }

2. Efetuando um Bind de Exchange Fanout

1
2
3
4
5
var exchangeName = "myExchangeName";
var queueName = "myQueueName";
var routingKey = ""; // Not using in fanout
bool success = Dp.Stream.AddBindingExchangeQueueRabbitMQ(exchangeName,
ExchangeType.Fanout, queueName, routingKey, null);

3. Efetuando um Bind de Exchange Topic

1
2
3
4
5
var exchangeName = "myExchangeName";
var queueName = "myQueueName";
var routingKey = "topic.routing.key"; // Important parameter in Exchange Topic
bool success = Dp.Stream.AddBindingExchangeQueueRabbitMQ(exchangeName,
ExchangeType.Topic, queueName, routingKey, null);

4. Efetuando um Bind de Exchange Headers utilizando argumentos

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
var exchangeName = "myExchangeName";
var queueName = "myQueueName";
var routingKey = string.Empty; // Not using in Headers
var arguments = new Dictionary<string, object>
    {
        { "headerKey1", "headerValue1" },
        { "headerKey2", "headerValue2" }
    };
bool success = Dp.Stream.AddBindingExchangeQueueRabbitMQ(exchangeName,
ExchangeType.Headers, queueName, routingKey, arguments);

Considerações

  • Certifique-se de que o exchangeName e o queueName estejam corretamente configurados e existam no RabbitMQ.
  • Ajuste a routingKey e os arguments conforme necessário para sua estratégia de roteamento de mensagens.
  • 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)