Skip to content

Commit 48b4968

Browse files
authored
Merge pull request #478 from serverlessworkflow/feat-subscription-iterator
Implement streaming features for the `listen` task and for the `asyncapi` call
2 parents ac3af7e + 73b296a commit 48b4968

30 files changed

+583
-50
lines changed

src/api/Synapse.Api.Application/Synapse.Api.Application.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
<ItemGroup>
4545
<PackageReference Include="IdentityServer4" Version="4.1.2" NoWarn="NU1902" />
4646
<PackageReference Include="IdentityServer4.Storage" Version="4.1.2" NoWarn="NU1902" />
47-
<PackageReference Include="Polly" Version="8.5.0" />
47+
<PackageReference Include="Polly" Version="8.5.1" />
4848
</ItemGroup>
4949

5050
<ItemGroup>

src/api/Synapse.Api.Client.Http/Synapse.Api.Client.Http.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
</ItemGroup>
4343

4444
<ItemGroup>
45-
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.0" />
46-
<PackageReference Include="ServerlessWorkflow.Sdk.IO" Version="1.0.0-alpha6.2" />
45+
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="9.0.1" />
46+
<PackageReference Include="ServerlessWorkflow.Sdk.IO" Version="1.0.0-alpha6.3" />
4747
<PackageReference Include="System.Reactive" Version="6.0.1" />
4848
</ItemGroup>
4949

src/api/Synapse.Api.Server/Synapse.Api.Server.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@
3131
</PropertyGroup>
3232

3333
<ItemGroup>
34-
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.0" />
35-
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.0" />
36-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.0" />
34+
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.1" />
35+
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.1" />
36+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="9.0.1" />
3737
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
3838
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="7.2.0" />
3939
</ItemGroup>

src/cli/Synapse.Cli/Synapse.Cli.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
</PropertyGroup>
3030

3131
<ItemGroup>
32-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
33-
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.0" />
32+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.1" />
33+
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.1" />
3434
<PackageReference Include="moment.net" Version="1.3.4" />
3535
<PackageReference Include="NetEscapades.Configuration.Yaml" Version="3.1.0" />
36-
<PackageReference Include="ServerlessWorkflow.Sdk.IO" Version="1.0.0-alpha6.2" />
36+
<PackageReference Include="ServerlessWorkflow.Sdk.IO" Version="1.0.0-alpha6.3" />
3737
<PackageReference Include="Spectre.Console" Version="0.49.1" />
3838
<PackageReference Include="System.CommandLine.NamingConventionBinder" Version="2.0.0-beta4.22272.1" />
3939
</ItemGroup>

src/core/Synapse.Core.Infrastructure/Synapse.Core.Infrastructure.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
<PackageReference Include="Neuroglia.Mediation" Version="4.18.1" />
5252
<PackageReference Include="Neuroglia.Plugins" Version="4.18.1" />
5353
<PackageReference Include="Neuroglia.Serialization.Xml" Version="4.18.1" />
54-
<PackageReference Include="ServerlessWorkflow.Sdk.IO" Version="1.0.0-alpha6.2" />
54+
<PackageReference Include="ServerlessWorkflow.Sdk.IO" Version="1.0.0-alpha6.3" />
5555
</ItemGroup>
5656

5757
<ItemGroup>

src/core/Synapse.Core/Resources/CorrelationContext.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,19 @@ public record CorrelationContext
3737
/// <summary>
3838
/// Gets a key/value mapping of the context's correlation keys
3939
/// </summary>
40-
[DataMember(Name = "keys", Order = 2), JsonPropertyName("keys"), JsonPropertyOrder(2), YamlMember(Alias = "keys", Order = 2)]
40+
[DataMember(Name = "keys", Order = 3), JsonPropertyName("keys"), JsonPropertyOrder(3), YamlMember(Alias = "keys", Order = 3)]
4141
public virtual EquatableDictionary<string, string> Keys { get; set; } = [];
4242

4343
/// <summary>
4444
/// Gets a key/value mapping of all correlated events, with the key being the index of the matched correlation filter
4545
/// </summary>
46-
[DataMember(Name = "events", Order = 3), JsonPropertyName("events"), JsonPropertyOrder(3), YamlMember(Alias = "events", Order = 3)]
46+
[DataMember(Name = "events", Order = 4), JsonPropertyName("events"), JsonPropertyOrder(4), YamlMember(Alias = "events", Order = 4)]
4747
public virtual EquatableDictionary<int, CloudEvent> Events { get; set; } = [];
4848

49+
/// <summary>
50+
/// Gets the offset that serves as the index of the event being processed by the consumer, if streaming has been enabled for the correlation associated with the context.
51+
/// </summary>
52+
[DataMember(Name = "offset", Order = 5), JsonPropertyName("offset"), JsonPropertyOrder(5), YamlMember(Alias = "offset", Order = 5)]
53+
public virtual uint? Offset { get; set; }
54+
4955
}

src/core/Synapse.Core/Resources/CorrelationSpec.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,16 @@ public record CorrelationSpec
4646
[DataMember(Name = "events", Order = 4), JsonPropertyName("events"), JsonPropertyOrder(4), YamlMember(Alias = "events", Order = 4)]
4747
public virtual EventConsumptionStrategyDefinition Events { get; set; } = null!;
4848

49+
/// <summary>
50+
/// Gets/sets a boolean indicating whether or not to stream events. When enabled, each correlated event is atomically published to the subscriber immediately rather than waiting for the entire correlation to complete
51+
/// </summary>
52+
[DataMember(Name = "stream", Order = 5), JsonPropertyName("stream"), JsonPropertyOrder(5), YamlMember(Alias = "stream", Order = 5)]
53+
public virtual bool Stream { get; set; }
54+
4955
/// <summary>
5056
/// Gets/sets an object used to configure the correlation's outcome
5157
/// </summary>
52-
[DataMember(Name = "outcome", Order = 5), JsonPropertyName("outcome"), JsonPropertyOrder(5), YamlMember(Alias = "outcome", Order = 5)]
58+
[DataMember(Name = "outcome", Order = 6), JsonPropertyName("outcome"), JsonPropertyOrder(6), YamlMember(Alias = "outcome", Order = 6)]
5359
public virtual CorrelationOutcomeDefinition Outcome { get; set; } = null!;
5460

5561
}

src/core/Synapse.Core/Synapse.Core.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@
6666
<ItemGroup>
6767
<PackageReference Include="Apache.Avro" Version="1.12.0" />
6868
<PackageReference Include="Docker.DotNet" Version="3.125.15" />
69-
<PackageReference Include="KubernetesClient" Version="15.0.1" />
69+
<PackageReference Include="KubernetesClient" Version="16.0.1" />
7070
<PackageReference Include="Neuroglia.Data.Infrastructure.ResourceOriented" Version="4.18.1" />
7171
<PackageReference Include="Neuroglia.Eventing.CloudEvents" Version="4.18.1" />
7272
<PackageReference Include="Semver" Version="3.0.0" />
73-
<PackageReference Include="ServerlessWorkflow.Sdk" Version="1.0.0-alpha6.2" />
73+
<PackageReference Include="ServerlessWorkflow.Sdk" Version="1.0.0-alpha6.3" />
7474
</ItemGroup>
7575

7676
</Project>

src/correlator/Synapse.Correlator/Services/CorrelationHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ protected virtual async Task CreateOrUpdateContextAsync(CorrelationContext conte
334334
{
335335
var index = updatedResource.Status.Contexts.IndexOf(existingContext);
336336
updatedResource.Status.Contexts.Remove(existingContext);
337-
if (!completed) updatedResource.Status.Contexts.Insert(index, context);
337+
updatedResource.Status.Contexts.Insert(index, context);
338338
}
339339
if (completed)
340340
{

src/correlator/Synapse.Correlator/Synapse.Correlator.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
</PropertyGroup>
3434

3535
<ItemGroup>
36-
<PackageReference Include="Microsoft.Extensions.Configuration.KeyPerFile" Version="9.0.0" />
37-
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.0" />
36+
<PackageReference Include="Microsoft.Extensions.Configuration.KeyPerFile" Version="9.0.1" />
37+
<PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.1" />
3838
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.0" />
3939
<PackageReference Include="Neuroglia.Data.Expressions.JavaScript" Version="4.18.1" />
4040
<PackageReference Include="Neuroglia.Data.Expressions.JQ" Version="4.18.1" />

0 commit comments

Comments
 (0)