RebusSubscription EnsureSubscription(IDocumentSession session, Type messageType) { var subscription = session.Load<RebusSubscription>(Key(messageType)); if (subscription == null) { var newSubscription = new RebusSubscription { Id = Key(messageType) }; session.Store(newSubscription); return newSubscription; } return subscription; }
public virtual void Remove(Type eventType, string subscriberInputQueue) { var table = EnsureTableStorage(); var subscription = new RebusSubscription(eventType, subscriberInputQueue); var retrieveOperation = TableOperation.Retrieve <RebusSubscription>(subscription.PartitionKey, subscription.RowKey); var retrievedResult = table.Execute(retrieveOperation); if (retrievedResult.Result == null) { return; } var removeOperation = TableOperation.Delete(retrievedResult.Result as ITableEntity); table.Execute(removeOperation); }
public virtual void Store(Type eventType, string subscriberInputQueue) { var table = EnsureTableStorage(); var subscription = new RebusSubscription(eventType, subscriberInputQueue); var retrieveOperation = TableOperation.Retrieve <RebusSubscription>(subscription.PartitionKey, subscription.RowKey); var result = table.Execute(retrieveOperation); if (result.Result != null) { return; } var createSubscriptionOperation = TableOperation.Insert(subscription); var creationOperationResult = table.Execute(createSubscriptionOperation); if (creationOperationResult.Result == null) { throw new InvalidOperationException("The subscription registration failed."); } }