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); }
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); }
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); }