Skip to content

Commit 0ce7536

Browse files
Copilotdandrejvv
andcommitted
Update AzureEventGrid to support IMessageBus and composite mode
Co-authored-by: dandrejvv <[email protected]>
1 parent ebf14fa commit 0ce7536

File tree

3 files changed

+51
-3
lines changed

3 files changed

+51
-3
lines changed

Modules/Intent.Modules.Eventing.AzureEventGrid/Intent.Modules.Eventing.AzureEventGrid.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<ItemGroup>
99
<PackageReference Include="Intent.Modules.Common" Version="3.8.0" />
10-
<PackageReference Include="Intent.Modules.Common.CSharp" Version="3.8.3" />
10+
<PackageReference Include="Intent.Modules.Common.CSharp" Version="3.9.0" />
1111
<PackageReference Include="Intent.Modules.Eventing.Contracts" Version="5.2.0" />
1212
<PackageReference Include="Intent.Modules.Modelers.Eventing" Version="6.0.1" />
1313
<PackageReference Include="Intent.Modules.Modelers.Services" Version="3.10.0" />
@@ -22,6 +22,7 @@
2222

2323
<ItemGroup>
2424
<ProjectReference Include="..\Intent.Modules.Constants\Intent.Modules.Constants.csproj" PrivateAssets="All" />
25+
<ProjectReference Include="..\Intent.Modules.Eventing.Contracts\Intent.Modules.Eventing.Contracts.csproj" PrivateAssets="All" />
2526
</ItemGroup>
2627

2728
<Import Project="..\Intent.Modules.Eventing.Shared\Intent.Modules.Eventing.Shared.projitems" Label="Shared" />

Modules/Intent.Modules.Eventing.AzureEventGrid/Templates/AzureEventGridConfiguration/AzureEventGridConfigurationTemplatePartial.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,26 @@ public AzureEventGridConfigurationTemplate(IOutputTarget outputTarget, object mo
4242
method.Static()
4343
.AddParameter("IServiceCollection", "services", param => param.WithThisModifier())
4444
.AddParameter("IConfiguration", "configuration");
45+
46+
var compositeTemplate = GetTemplate<ICSharpFileBuilderTemplate>(TemplateDependency.OnTemplate("Intent.Eventing.Contracts.CompositeMessageBusConfiguration"));
47+
var isCompositeMode = compositeTemplate != null;
48+
49+
if (isCompositeMode)
50+
{
51+
method.AddParameter(this.GetMessageBrokerRegistryName(), "registry");
52+
}
4553

46-
method.AddStatement($"services.AddScoped<{this.GetEventBusInterfaceName()}, {this.GetAzureEventGridEventBusName()}>();");
54+
if (isCompositeMode)
55+
{
56+
method.AddStatement($"// Register as concrete type for composite message bus");
57+
method.AddStatement($"services.AddScoped<{this.GetAzureEventGridEventBusName()}>();");
58+
}
59+
else
60+
{
61+
method.AddStatement($"// Register as IMessageBus and IEventBus for standalone mode");
62+
method.AddStatement($"services.AddScoped<{this.GetMessageBusInterfaceName()}, {this.GetAzureEventGridEventBusName()}>();");
63+
method.AddStatement($"services.AddScoped<{this.GetEventBusInterfaceName()}, {this.GetAzureEventGridEventBusName()}>();");
64+
}
4765
method.AddStatement($"services.AddSingleton<{this.GetAzureEventGridMessageDispatcherName()}>();");
4866
method.AddStatement($"services.AddSingleton<{this.GetAzureEventGridMessageDispatcherInterfaceName()}, {this.GetAzureEventGridMessageDispatcherName()}>();");
4967

@@ -58,6 +76,16 @@ public AzureEventGridConfigurationTemplate(IOutputTarget outputTarget, object mo
5876
if (publishMessages.Count != 0)
5977
{
6078
ConfigurePublisherOptions(method, publishMessages);
79+
80+
if (isCompositeMode)
81+
{
82+
method.AddStatement("", s => s.SeparatedFromPrevious());
83+
method.AddStatement("// Register message types with the composite message bus registry");
84+
foreach (var publishMessage in publishMessages)
85+
{
86+
method.AddStatement($"registry.Register<{publishMessage.GetModelTypeName(this)}, {this.GetAzureEventGridEventBusName()}>();");
87+
}
88+
}
6189
}
6290

6391
var eventHandlers = IntegrationManager.Instance.GetSubscribedAzureEventGridMessages(ExecutionContext.GetApplicationConfig().Id);

Modules/Intent.Modules.Eventing.AzureEventGrid/Templates/AzureEventGridEventBus/AzureEventGridEventBusTemplatePartial.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public AzureEventGridEventBusTemplate(IOutputTarget outputTarget, object model =
3737
.AddUsing("Microsoft.Extensions.Options")
3838
.AddClass($"AzureEventGridEventBus", @class =>
3939
{
40-
@class.ImplementsInterface(this.GetEventBusInterfaceName());
40+
@class.ImplementsInterface(this.GetMessageBusInterfaceName());
4141
@class.AddField("List<MessageEntry>", "_messageQueue", field => field.PrivateReadOnly().WithAssignment(new CSharpStatement("[]")));
4242
@class.AddField("Dictionary<string, PublisherEntry>", "_lookup", field => field.PrivateReadOnly());
4343

@@ -78,6 +78,25 @@ public AzureEventGridEventBusTemplate(IOutputTarget outputTarget, object model =
7878
method.AddStatement("_messageQueue.Add(new MessageEntry(message, additionalData));");
7979
});
8080

81+
@class.AddMethod("void", "Send", method =>
82+
{
83+
method.AddGenericParameter("T", out var T);
84+
method.AddGenericTypeConstraint(T, c => c.AddType("class"));
85+
method.AddParameter(T, "message");
86+
87+
method.AddStatement("Publish(message);");
88+
});
89+
90+
@class.AddMethod("void", "Send", method =>
91+
{
92+
method.AddGenericParameter("T", out var T);
93+
method.AddGenericTypeConstraint(T, c => c.AddType("class"));
94+
method.AddParameter(T, "message");
95+
method.AddParameter("IDictionary<string, object>", "additionalData");
96+
97+
method.AddStatement("Publish(message, additionalData);");
98+
});
99+
81100
@class.AddMethod("Task", "FlushAllAsync", method =>
82101
{
83102
method.Async();

0 commit comments

Comments
 (0)