protected async void ReceiveMessages(Func <Message, CancellationToken, Task> handler)
        {
            var serviceBusConfiguration = _configuration.GetSection("serviceBus").Get <ServiceBusConfiguration>();
            var subscriptionClient      = new SubscriptionClient(serviceBusConfiguration.ConnectionString, _topic, _subscriptionName);

            var rules = await subscriptionClient.GetRulesAsync();

            if (rules.Any(x => x.Name == "$Default"))
            {
                await subscriptionClient.RemoveRuleAsync("$Default");
            }

            if (!rules.Any(x => x.Name == "filter-store"))
            {
                await subscriptionClient.AddRuleAsync(new RuleDescription
                {
                    Filter = new CorrelationFilter {
                        Label = _storeId
                    },
                    Name = "filter-store"
                });
            }

            var mo = new MessageHandlerOptions(ExceptionHandle)
            {
                AutoComplete = true
            };

            subscriptionClient.RegisterMessageHandler(handler, mo);
        }
        public bool CreateIfNotExistSubscriptionToPublishSubscribeChannel(string connectionstring, string path, string subscription, string origin, bool all)
        {
            var configuration = JsonConvert.DeserializeObject <ServiceBusConfiguration>(connectionstring);

            var serviceBusNamespace = GetServiceBusNamespace(configuration);

            if (serviceBusNamespace != null)
            {
                try
                {
                    var topic = serviceBusNamespace.Topics.GetByName(path);

                    try
                    {
                        topic.Subscriptions.GetByName(subscription);

                        return(false);
                    }
                    catch (CloudException ex)
                    {
                        if (ex.Response.StatusCode == HttpStatusCode.NotFound)
                        {
                            topic.Subscriptions.Define(subscription)
                            .WithDefaultMessageTTL(TimeSpan.FromDays(14))
                            .WithMessageLockDurationInSeconds(300)
                            .Create();

                            var subs = new Microsoft.Azure.ServiceBus.SubscriptionClient(configuration.ConnectionString, path, subscription);

                            if (!all)
                            {
                                subs.RemoveRuleAsync("$Default").GetAwaiter().GetResult();

                                var ruledescriptor = new RuleDescription("$Default", new SqlFilter($"origin='{origin}'"));

                                subs.AddRuleAsync(ruledescriptor).GetAwaiter().GetResult();
                            }

                            return(true);
                        }
                    }
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            return(false);
        }
Esempio n. 3
0
        private static async void ReceiveMessages()
        {
            var subscriptionClient = new SubscriptionClient(serviceBusConfiguration.ConnectionString, Topic, SubscriptionName);
            await subscriptionClient.RemoveRuleAsync("$Default");

            await subscriptionClient.AddRuleAsync(new RuleDescription
            {
                Filter = new CorrelationFilter {
                    Label = _storeId
                },
                Name = "filter-store"
            });

            var mo = new MessageHandlerOptions(ExceptionHandle)
            {
                AutoComplete = true
            };

            subscriptionClient.RegisterMessageHandler(Handle, mo);
        }
        private async void ReceiveMessages()
        {
            var subscriptionClient = new SubscriptionClient(serviceBusConfiguration.ConnectionString, TopicProduction, SubscriptionName);

            //by default a 1=1 rule is added when subscription is created, so we need to remove it
            await subscriptionClient.RemoveRuleAsync("$Default");

            await subscriptionClient.AddRuleAsync(new RuleDescription
            {
                Filter = new CorrelationFilter {
                    Label = _storeId
                },
                Name = "filter-store"
            });

            var mo = new MessageHandlerOptions(ExceptionHandle)
            {
                AutoComplete = true
            };

            subscriptionClient.RegisterMessageHandler(Handle, mo);
        }
Esempio n. 5
0
        private async void GetOrder()
        {
            string connectionString   = _configuration["serviceBus:connectionString"];
            var    subscriptionClient = new Microsoft.Azure.ServiceBus.SubscriptionClient(connectionString, "newOrder", "mySubscrition");
            await subscriptionClient.RemoveRuleAsync("$Default");

            await subscriptionClient.AddRuleAsync(new RuleDescription
            {
                Filter = new CorrelationFilter
                {
                    Label = "LosAngeles"
                },
                Name = "filter-store"
            });

            var mo = new MessageHandlerOptions(ExceptionHandle)
            {
                AutoComplete = true
            };

            subscriptionClient.RegisterMessageHandler(Handle, mo);
        }