Skip to content

Conversation

@OlivierLePichon
Copy link
Contributor

Pour simplifier le passage aux queues quorums, cette version ajoute un bool isQuorum où c'est nécessaire (cad dans toutes méthodes DeclareQueueXxx).

Par exemple sur IMessagingService :

void DeclareQueue(string queueName, Dictionary<string, object> queueArgs, bool isQuorum)

Mettre isQuorum a true:

  1. ajoute aux queueArguments un ["x-queue-type"]="quorum"
  2. suffixe le queueName passé par "-q"

Le 2. est nécessaire parce qu'il n'est pas possible de recréer une queue ayant même nom sans, au paravent, détruire la précédente.

Il a été décidé de ne pas mettre de valeur par défaut à isQuorum pour rendre cette version breaking et forcer le choix.

Comme le queueName fournis en paramètre n'est plus toujours le nom qui a été donné à la queue, le effectiveQueuename (avec effectiveQueueName = isQuorum?queueName+"-q":queueName) est retourné par toute méthode DeclareQueueXxxx

Cette valeur retournés doit être utilisée par exemple pour déclarer des bindings comme fait dans :

private void CreateMainExchange(RetryStrategyConfiguration configuration, bool isQuorum)
{
    _messagingService.DeclareExchange(configuration.BusName, Constants.ExchangeTypeTopic);
    foreach (Channel channel in configuration.Channels)
    {
        var effectiveQueueName = _messagingService.DeclareQueue(channel.Value, isQuorum);
        _messagingService.DeclareBinding(configuration.BusName, effectiveQueueName, $"{channel.Value}.#");
    }
}

ATTENTION: Les queues quorums doivent impérativement être durable et non auto delete. Si isQuorum est passé à true à un DeclareQueueXxx d'une queue qui ne l'est pas, vous obtiendrez un :

throw new ArgumentException("Quorum queues must be durable and non-auto-delete")

@OlivierLePichon OlivierLePichon force-pushed the Simplify-quorum-creation branch 4 times, most recently from 99f55a8 to 6b830be Compare February 13, 2025 10:00
@OlivierLePichon OlivierLePichon force-pushed the Simplify-quorum-creation branch 2 times, most recently from 8c127a9 to 6e3fc47 Compare February 13, 2025 10:53
@OlivierLePichon OlivierLePichon force-pushed the Simplify-quorum-creation branch from 6e3fc47 to f2c6755 Compare February 13, 2025 11:09
@OlivierLePichon OlivierLePichon marked this pull request as ready for review February 13, 2025 11:14
@OlivierLePichon OlivierLePichon changed the title Implementation + tests update Queues Quorum helper implementation + tests update Feb 13, 2025
@OlivierLePichon OlivierLePichon changed the title Queues Quorum helper implementation + tests update Queues quorum helper implementation + tests update Feb 13, 2025
Copy link

@Poltuu Poltuu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

j'ai jamais touché à cette lib, il vaut mieux demander à qqun d'autre :)

@OlivierLePichon OlivierLePichon merged commit 0ebf680 into master Feb 13, 2025
2 checks passed
@OlivierLePichon OlivierLePichon deleted the Simplify-quorum-creation branch February 14, 2025 09:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants