async Task SubscribeEvent(ServiceBusAdministrationClient client, Type eventType, CancellationToken cancellationToken)
        {
            var ruleName      = transportSettings.SubscriptionRuleNamingConvention(eventType);
            var sqlExpression = $"[{Headers.EnclosedMessageTypes}] LIKE '%{eventType.FullName}%'";
            var rule          = new CreateRuleOptions(ruleName, new SqlRuleFilter(sqlExpression));

            try
            {
                var existingRule = await client.GetRuleAsync(transportSettings.TopicName, subscriptionName, rule.Name, cancellationToken).ConfigureAwait(false);

                if (existingRule.Value.Filter.ToString() != rule.Filter.ToString())
                {
                    existingRule.Value.Action = rule.Action;

                    await client.UpdateRuleAsync(transportSettings.TopicName, subscriptionName, existingRule, cancellationToken).ConfigureAwait(false);
                }
            }
            catch (ServiceBusException sbe) when(sbe.Reason == ServiceBusFailureReason.MessagingEntityNotFound)
            {
                try
                {
                    await client.CreateRuleAsync(transportSettings.TopicName, subscriptionName, rule, cancellationToken).ConfigureAwait(false);
                }
                catch (ServiceBusException createSbe) when(createSbe.Reason == ServiceBusFailureReason.MessagingEntityAlreadyExists)
                {
                }
            }
        }