/// <summary> /// Transforms the <see cref="SubscriptionOptionsDto"/> into a new <see cref="PersistentSubscriptionSettings"/> /// </summary> /// <param name="subscriptionOptions">The <see cref="SubscriptionOptionsDto"/> to transform</param> /// <returns>A new <see cref="PersistentSubscriptionSettings"/></returns> public static PersistentSubscriptionSettings ToPersistentSubscriptionSettings(this SubscriptionOptionsDto subscriptionOptions) { PersistentSubscriptionSettingsBuilder builder = PersistentSubscriptionSettings.Create(); if (subscriptionOptions.StreamPosition.HasValue) { switch (subscriptionOptions.StreamPosition.Value) { case StreamPosition.Start: builder.StartFromBeginning(); break; case StreamPosition.End: builder.StartFromCurrent(); break; default: builder.StartFrom(subscriptionOptions.StreamPosition.Value); break; } } builder.ResolveLinkTos(); builder.WithMaxSubscriberCountOf(1); builder.MinimumCheckPointCountOf(1); builder.MaximumCheckPointCountOf(1); return(builder.Build()); }
/// <summary> /// Creates the persistent subscription from position. /// </summary> /// <param name="stream">The stream.</param> /// <param name="groupName">Name of the group.</param> /// <param name="position">The position.</param> /// <returns></returns> public async Task CreatePersistentSubscriptionFromPosition(String stream, String groupName, Int32 position) { PersistentSubscriptionSettingsBuilder settingsBuilder = PersistentSubscriptionSettings.Create() .ResolveLinkTos().WithMaxRetriesOf(10).WithMessageTimeoutOf(TimeSpan.FromSeconds(10)).StartFrom(position); await this.CreatePersistentSubscription(stream, groupName, settingsBuilder.Build()); }
private async Task CreateSubscription(string subscription, string eventTypeStream, PersistentSubscriptionSettingsBuilder settings) { try { await _conn.CreatePersistentSubscriptionAsync(eventTypeStream, subscription, settings, _credentials); } catch { // Already exists } }