diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker.sln b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker.sln
index 44bc7aa7cb9..5a38e593b2e 100644
--- a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker.sln
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31919.166
+# Visual Studio Version 18
+VisualStudioVersion = 18.0.11012.119 d18.0
MinimumVisualStudioVersion = 15.0.26730.12
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASBFunctionsWorker_1", "ASBFunctionsWorker_1\ASBFunctionsWorker_1.csproj", "{A491A83E-174A-4639-B55E-72ED39DD955C}"
EndProject
@@ -14,6 +14,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASBFunctionsWorker_5", "ASB
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ASBFunctionsWorker_6", "ASBFunctionsWorker_6\ASBFunctionsWorker_6.csproj", "{B447A2D5-2B62-4198-9519-12339CCCA403}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ASBFunctionsWorker_7", "ASBFunctionsWorker_7\ASBFunctionsWorker_7.csproj", "{A0D01DCB-8A89-A490-EDFB-A2F37CD721F8}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -44,6 +46,10 @@ Global
{B447A2D5-2B62-4198-9519-12339CCCA403}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B447A2D5-2B62-4198-9519-12339CCCA403}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B447A2D5-2B62-4198-9519-12339CCCA403}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A0D01DCB-8A89-A490-EDFB-A2F37CD721F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A0D01DCB-8A89-A490-EDFB-A2F37CD721F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A0D01DCB-8A89-A490-EDFB-A2F37CD721F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A0D01DCB-8A89-A490-EDFB-A2F37CD721F8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_1/ASBFunctionsWorker_1.csproj b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_1/ASBFunctionsWorker_1.csproj
index 23682158093..e4dbf27d2ae 100644
--- a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_1/ASBFunctionsWorker_1.csproj
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_1/ASBFunctionsWorker_1.csproj
@@ -1,23 +1,18 @@
- net8.0
+ net10.0
-
-
+
+
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_2/ASBFunctionsWorker_2.csproj b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_2/ASBFunctionsWorker_2.csproj
index 0f1e302b11d..7c7115bbe77 100644
--- a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_2/ASBFunctionsWorker_2.csproj
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_2/ASBFunctionsWorker_2.csproj
@@ -1,23 +1,17 @@
- net8.0
+ net10.0
-
-
+
+
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_3/ASBFunctionsWorker_3.csproj b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_3/ASBFunctionsWorker_3.csproj
index a11dc78854a..89276c60755 100644
--- a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_3/ASBFunctionsWorker_3.csproj
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_3/ASBFunctionsWorker_3.csproj
@@ -1,19 +1,18 @@
- net8.0
+ net10.0
-
-
+
+
-
-
+
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_4/ASBFunctionsWorker_4.csproj b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_4/ASBFunctionsWorker_4.csproj
index c84a1b501b2..dd6bf08a646 100644
--- a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_4/ASBFunctionsWorker_4.csproj
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_4/ASBFunctionsWorker_4.csproj
@@ -1,10 +1,13 @@
+
- net8.0
+ net10.0
+
-
+
+
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_5/ASBFunctionsWorker_5.csproj b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_5/ASBFunctionsWorker_5.csproj
index 167d3bae4a9..0f9fc93e685 100644
--- a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_5/ASBFunctionsWorker_5.csproj
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_5/ASBFunctionsWorker_5.csproj
@@ -1,10 +1,13 @@
+
- net8.0
+ net10.0
+
-
+
+
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_6/ASBFunctionsWorker_6.csproj b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_6/ASBFunctionsWorker_6.csproj
index fb9176c4d14..28e3c8b71df 100644
--- a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_6/ASBFunctionsWorker_6.csproj
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_6/ASBFunctionsWorker_6.csproj
@@ -1,10 +1,13 @@
+
- net8.0
+ net10.0
+
-
-
+
+
+
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/ASBFunctionsWorker_7.csproj b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/ASBFunctionsWorker_7.csproj
new file mode 100644
index 00000000000..bbdb4cc94f7
--- /dev/null
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/ASBFunctionsWorker_7.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net10.0
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Configuration.cs b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Configuration.cs
new file mode 100644
index 00000000000..a7537a5a88c
--- /dev/null
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Configuration.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Threading.Tasks;
+using Azure.Storage.Blobs;
+using Microsoft.Extensions.Hosting;
+using NServiceBus;
+
+#region asb-function-isolated-configuration
+[assembly: NServiceBusTriggerFunction("WorkerDemoEndpoint")]
+
+public class Program
+{
+ public static Task Main()
+ {
+ var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus()
+ .Build();
+
+ return host.RunAsync();
+ }
+}
+#endregion asb-function-isolated-configuration
+
+class EnableDiagnostics
+{
+ #region asb-function-isolated-enable-diagnostics
+ public static Task Main()
+ {
+ var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus(configuration =>
+ {
+ configuration.LogDiagnostics();
+ })
+ .Build();
+
+ return host.RunAsync();
+ }
+ #endregion
+}
+
+class EnableDiagnosticsBlob
+{
+ public static Task Main()
+ {
+ var endpointName = "ASBWorkerEndpoint";
+
+ #region asb-function-iso-diagnostics-blob
+ var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus(configuration =>
+ {
+ configuration.AdvancedConfiguration.CustomDiagnosticsWriter(
+ async (diagnostics, cancellationToken) =>
+ {
+ var connectionString = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
+ var blobServiceClient = new BlobServiceClient(connectionString);
+
+ var containerClient = blobServiceClient.GetBlobContainerClient("diagnostics");
+ await containerClient.CreateIfNotExistsAsync(cancellationToken: cancellationToken);
+
+ var blobName = $"{endpointName}-configuration.txt";
+ var blobClient = containerClient.GetBlobClient(blobName);
+ await blobClient.UploadAsync(BinaryData.FromString(diagnostics), cancellationToken);
+ });
+ })
+ .Build();
+ #endregion
+ return host.RunAsync();
+ }
+
+}
+
+class ConfigureErrorQueue
+{
+ #region asb-function-isolated-configure-error-queue
+ public static Task Main()
+ {
+ var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus(configuration =>
+ {
+ // Change the error queue name:
+ configuration.AdvancedConfiguration.SendFailedMessagesTo("my-custom-error-queue");
+
+ // Or disable the error queue to let ASB native dead-lettering handle repeated failures:
+ configuration.DoNotSendMessagesToErrorQueue();
+ })
+ .Build();
+
+ return host.RunAsync();
+ }
+ #endregion
+}
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Identity.txt b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Identity.txt
new file mode 100644
index 00000000000..6229b10fb4b
--- /dev/null
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Identity.txt
@@ -0,0 +1,3 @@
+#startcode asb-function-isolated-identity-connection
+[assembly: NServiceBusTriggerFunction("WorkerDemoEndpoint", Connection = "MyConnectionName")]
+#endcode
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Sending.cs b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Sending.cs
new file mode 100644
index 00000000000..5296aacc5a9
--- /dev/null
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/Sending.cs
@@ -0,0 +1,34 @@
+namespace ASBFunctionsWorker_5
+{
+ using Microsoft.Azure.Functions.Worker;
+ using Microsoft.Azure.Functions.Worker.Http;
+ using NServiceBus;
+ using System.Net;
+ using System.Threading.Tasks;
+
+ #region asb-function-isolated-dispatching-outside-message-handler
+ public class HttpTrigger
+ {
+ readonly IFunctionEndpoint functionEndpoint;
+
+ public HttpTrigger(IFunctionEndpoint functionEndpoint)
+ {
+ this.functionEndpoint = functionEndpoint;
+ }
+
+ [Function("HttpSender")]
+ public async Task Run(
+ [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestData req,
+ FunctionContext executionContext)
+ {
+ await functionEndpoint.Send(new TriggerMessage(), executionContext);
+
+ return req.CreateResponse(HttpStatusCode.OK);
+ }
+ }
+ #endregion
+
+ class TriggerMessage
+ {
+ }
+}
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/TopologyOptions.cs b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/TopologyOptions.cs
new file mode 100644
index 00000000000..4aa17377331
--- /dev/null
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/TopologyOptions.cs
@@ -0,0 +1,20 @@
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+using NServiceBus;
+
+namespace ASBFunctionsWorker_6
+{
+ class TopologyOptions
+ {
+ public void SetTopologyOptions()
+ {
+ #region ASBFunctionsWorker-topology-options
+ var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .ConfigureAppConfiguration(builder => builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true))
+ .UseNServiceBus()
+ .Build();
+ #endregion
+ }
+ }
+}
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/TriggerDefinition.cs b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/TriggerDefinition.cs
new file mode 100644
index 00000000000..7e2ce0a6573
--- /dev/null
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/TriggerDefinition.cs
@@ -0,0 +1,44 @@
+namespace ASBFunctionsWorker_6;
+
+using System.Threading;
+using System.Threading.Tasks;
+using Azure.Messaging.ServiceBus;
+using Microsoft.Azure.Functions.Worker;
+using Microsoft.Extensions.Hosting;
+using NServiceBus;
+
+#region custom-trigger-definition
+
+class CustomTriggerDefinition
+{
+ IFunctionEndpoint functionEndpoint;
+
+ public CustomTriggerDefinition(IFunctionEndpoint functionEndpoint)
+ {
+ this.functionEndpoint = functionEndpoint;
+ }
+
+ [Function("MyCustomTrigger")]
+ public async Task Run(
+ [ServiceBusTrigger("MyFunctionsEndpoint")]
+ ServiceBusReceivedMessage message, ServiceBusMessageActions messageActions, FunctionContext context,
+ CancellationToken cancellationToken = default)
+ {
+ await functionEndpoint.Process(message, messageActions, context, cancellationToken);
+ }
+}
+
+public class Program
+{
+ public async Task Main()
+ {
+ var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus("MyFunctionsEndpoint")
+ .Build();
+
+ await host.RunAsync();
+ }
+}
+
+#endregion
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/appsettings.migration.json b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/appsettings.migration.json
new file mode 100644
index 00000000000..968cbb1ffcc
--- /dev/null
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/appsettings.migration.json
@@ -0,0 +1,25 @@
+#startcode ASBFunctionsWorker-topology-migration-options-json
+{
+ "AzureServiceBus": {
+ "MigrationTopologyOptions": {
+ "TopicToPublishTo": "TopicToPublishTo",
+ "TopicToSubscribeOn": "TopicToSubscribeOn",
+ "EventsToMigrateMap": [
+ "MyNamespace.NotYetMigratedEvent"
+ ],
+ "SubscribedEventToRuleNameMap": {
+ "MyNamespace.NotYetMigratedEvent": "EventRuleName"
+ },
+ "PublishedEventToTopicsMap": {
+ "MyNamespace.MigratedEvent": "MigratedEvent"
+ },
+ "SubscribedEventToTopicsMap": {
+ "MyNamespace.MigratedEvent": "MigratedEvent"
+ },
+ "QueueNameToSubscriptionNameMap": {
+ "Publisher": "PublisherSubscriptionName"
+ }
+ }
+ }
+}
+#endcode
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/appsettings.topology.json b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/appsettings.topology.json
new file mode 100644
index 00000000000..734888c5087
--- /dev/null
+++ b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/appsettings.topology.json
@@ -0,0 +1,20 @@
+#startcode ASBFunctionsWorker-topology-options-json
+{
+ "AzureServiceBus": {
+ "TopologyOptions": {
+ "PublishedEventToTopicsMap": {
+ "MyNamespace.SomeEvent": "some-event"
+ },
+ "SubscribedEventToTopicsMap": {
+ "MyNamespace.SomeEvent": [
+ "some-event",
+ "some-other-event"
+ ]
+ },
+ "QueueNameToSubscriptionNameMap": {
+ "Publisher": "PublisherSubscriptionName"
+ }
+ }
+ }
+}
+#endcode
\ No newline at end of file
diff --git a/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_6/prerelease.txt b/Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/prerelease.txt
similarity index 100%
rename from Snippets/ASBFunctionsWorker/ASBFunctionsWorker_6/prerelease.txt
rename to Snippets/ASBFunctionsWorker/ASBFunctionsWorker_7/prerelease.txt
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
index 4fe46b9ea68..48c490d0b43 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
+++ b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
@@ -1,23 +1,29 @@
+
net9.0;net8.0
+ Exe
v4
+ enable
12.0
- Exe
+
+
+
+
+
-
+
+
-
-
+
-
-
-
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
index 47d0bba0258..5193bc7685b 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
@@ -1,5 +1,4 @@
-using System.Threading.Tasks;
-using AzureFunctions.Messages.NServiceBusMessages;
+using AzureFunctions.Messages.NServiceBusMessages;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
@@ -7,24 +6,14 @@
namespace AzureFunctions.KafkaTrigger.FunctionsHostBuilder;
-public class KafkaTrigger
+public class KafkaTrigger(IMessageSession messageSession, ILogger logger)
{
- readonly IMessageSession messageSession;
- readonly ILogger logger;
-
- public KafkaTrigger(IMessageSession messageSession, ILogger logger)
- {
- this.messageSession = messageSession;
- this.logger = logger;
- }
-
#region KafkaTrigger
[Function(nameof(ElectricityUsage))]
public async Task ElectricityUsage([KafkaTrigger("LocalKafkaBroker", "topic", ConsumerGroup = "$Default")] string eventData,
FunctionContext context)
{
-
var eventValue = JObject.Parse(eventData)["Value"]?.ToString();
var electricityUsage = Messages.KafkaMessages.ElectricityUsage.Deserialize(eventValue);
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
index f0a1bb1c5f9..d2038b3dd3e 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
@@ -1,41 +1,31 @@
-using System;
-using System.Threading.Tasks;
-using AzureFunctions.Messages.NServiceBusMessages;
+using AzureFunctions.Messages.NServiceBusMessages;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using NServiceBus;
-namespace AzureFunctions.KafkaTrigger.FunctionsHostBuilder;
+#region SetupNServiceBusSendOnly
-public class Program
-{
- public static async Task Main()
+var host = new HostBuilder()
+ .ConfigureServices(async services =>
{
- #region SetupNServiceBusSendOnly
+ var cfg = new EndpointConfiguration("SendOnly");
+ cfg.SendOnly();
+ cfg.UseSerialization();
- var host = new HostBuilder()
- .ConfigureServices(async services =>
- {
- var cfg = new EndpointConfiguration("SendOnly");
- cfg.SendOnly();
- cfg.UseSerialization();
+ var connectionString = Environment.GetEnvironmentVariable("AzureWebJobsServiceBus");
+ var transport = new AzureServiceBusTransport(connectionString);
+ var routing = cfg.UseTransport(transport);
- var connectionString = Environment.GetEnvironmentVariable("AzureWebJobsServiceBus");
- var transport = new AzureServiceBusTransport(connectionString);
- var routing = cfg.UseTransport(transport);
+ routing.RouteToEndpoint(typeof(FollowUp), "Samples.KafkaTrigger.ConsoleEndpoint");
- routing.RouteToEndpoint(typeof(FollowUp), "Samples.KafkaTrigger.ConsoleEndpoint");
+ var endpoint = await Endpoint.Start(cfg);
- var endpoint = await Endpoint.Start(cfg);
+ // Inject the endpoint in the DI container
+ services.AddSingleton(endpoint);
+ })
+ .ConfigureFunctionsWorkerDefaults()
+ .Build();
- // Inject the endpoint in the DI container
- services.AddSingleton(endpoint);
- })
- .ConfigureFunctionsWorkerDefaults()
- .Build();
+#endregion
- #endregion
-
- await host.RunAsync();
- }
-}
\ No newline at end of file
+await host.RunAsync();
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
index 9e6ce8c54c9..610d7e0ac7a 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
+++ b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
@@ -1,8 +1,8 @@
{
"version": "2.0",
"extensions": {
- "ServiceBus": {
- "EnableCrossEntityTransactions": true
+ "serviceBus": {
+ "enableCrossEntityTransactions": true
}
}
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/AzureFunctions.Messages.csproj b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/AzureFunctions.Messages.csproj
index 05b765b0196..b7090e186d1 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/AzureFunctions.Messages.csproj
+++ b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/AzureFunctions.Messages.csproj
@@ -1,9 +1,13 @@
-
+
+
net9.0;net8.0
+ enable
12.0
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/FollowUp.cs b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/FollowUp.cs
index 4403282bf8b..faa6ed2b041 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/FollowUp.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/FollowUp.cs
@@ -1,10 +1,10 @@
-using NServiceBus;
-
-namespace AzureFunctions.Messages.NServiceBusMessages;
+namespace AzureFunctions.Messages.NServiceBusMessages;
public class FollowUp : IMessage
{
public int CustomerId { get; set; }
+
public int UnitId { get; set; }
+
public string Description { get; set; }
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
index 0d0ceb394fd..2e2ce465a49 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_3/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
@@ -5,7 +5,9 @@ namespace AzureFunctions.Messages.KafkaMessages;
public class ElectricityUsage
{
public int CustomerId { get; set; }
+
public int UnitId { get; set; }
+
public int CurrentUsage { get; set; }
public static string Serialize(ElectricityUsage electricityUsage)
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_3/ConsoleEndpoint/Program.cs b/samples/azure-functions/service-bus-kafka/ASBS_3/ConsoleEndpoint/Program.cs
index c531741a9cd..e66aefca9f7 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_3/ConsoleEndpoint/Program.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_3/ConsoleEndpoint/Program.cs
@@ -2,71 +2,65 @@
using Confluent.Kafka;
using NServiceBus;
-class Program
-{
- static async Task Main()
- {
- const string endpointName = "Samples.KafkaTrigger.ConsoleEndpoint";
- Console.Title = endpointName;
+const string endpointName = "Samples.KafkaTrigger.ConsoleEndpoint";
+Console.Title = endpointName;
- var endpointConfiguration = new EndpointConfiguration(endpointName);
- endpointConfiguration.EnableInstallers();
- endpointConfiguration.UseSerialization();
+var endpointConfiguration = new EndpointConfiguration(endpointName);
+endpointConfiguration.EnableInstallers();
+endpointConfiguration.UseSerialization();
- var connectionString = Environment.GetEnvironmentVariable("AzureServiceBus_ConnectionString");
- if (string.IsNullOrWhiteSpace(connectionString))
- {
- throw new Exception("Could not read the 'AzureServiceBus_ConnectionString' environment variable. Check the sample prerequisites.");
- }
+var connectionString = Environment.GetEnvironmentVariable("AzureServiceBus_ConnectionString");
+if (string.IsNullOrWhiteSpace(connectionString))
+{
+ throw new Exception("Could not read the 'AzureServiceBus_ConnectionString' environment variable. Check the sample prerequisites.");
+}
- var transport = new AzureServiceBusTransport(connectionString);
- endpointConfiguration.UseTransport(transport);
+var transport = new AzureServiceBusTransport(connectionString);
+endpointConfiguration.UseTransport(transport);
- var endpointInstance = await Endpoint.Start(endpointConfiguration);
+var endpointInstance = await Endpoint.Start(endpointConfiguration);
- var config = new ProducerConfig
- {
- BootstrapServers = "localhost:9094",
- ClientId = "producer-1",
- BatchSize = 50
- };
+var config = new ProducerConfig
+{
+ BootstrapServers = "localhost:9094",
+ ClientId = "producer-1",
+ BatchSize = 50
+};
- Console.WriteLine("Press '[enter]' to send a 100 events using Kafka and wait for a possible response...");
- Console.WriteLine("Press any other key to exit");
+Console.WriteLine("Press '[enter]' to send a 100 events using Kafka and wait for a possible response...");
+Console.WriteLine("Press any other key to exit");
- using (var producer = new ProducerBuilder(config)
- .Build())
- {
- while (true)
- {
- var key = Console.ReadKey();
- Console.WriteLine();
-
- if (key.Key != ConsoleKey.Enter)
- {
- break;
- }
+using (var producer = new ProducerBuilder(config)
+ .Build())
+{
+ while (true)
+ {
+ var key = Console.ReadKey();
+ Console.WriteLine();
- for (int i = 0; i < 100; i++)
- {
- #region ProduceEvent
+ if (key.Key != ConsoleKey.Enter)
+ {
+ break;
+ }
- var electricityUsage = new ElectricityUsage() { CustomerId = 42, CurrentUsage = i, UnitId = 1337 };
+ for (int i = 0; i < 100; i++)
+ {
+ #region ProduceEvent
- var message = new Message
- {
- Value = ElectricityUsage.Serialize(electricityUsage)
- };
+ var electricityUsage = new ElectricityUsage() { CustomerId = 42, CurrentUsage = i, UnitId = 1337 };
- var deliveryResult = await producer.ProduceAsync("myKafkaTopic", message);
+ var message = new Message
+ {
+ Value = ElectricityUsage.Serialize(electricityUsage)
+ };
- #endregion
- }
+ var deliveryResult = await producer.ProduceAsync("myKafkaTopic", message);
- Console.WriteLine("100 messages sent");
- }
+ #endregion
}
- await endpointInstance.Stop();
+ Console.WriteLine("100 messages sent");
}
-}
\ No newline at end of file
+}
+
+await endpointInstance.Stop();
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
index 18e731fbc9b..c21ae346dbf 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
@@ -1,22 +1,28 @@
+
net9.0;net8.0
+ Exe
v4
+ enable
12.0
- Exe
+
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
index 316a7aa6044..307e45a7f29 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
@@ -1,24 +1,18 @@
-using Microsoft.Azure.Functions.Worker;
-using Microsoft.Extensions.Logging;
-using NServiceBus;
-using System.Threading.Tasks;
+using System.Text.Json.Nodes;
using AzureFunctions.Messages.NServiceBusMessages;
-using System.Text.Json.Nodes;
+using Microsoft.Azure.Functions.Worker;
+using Microsoft.Extensions.Logging;
namespace AzureFunctions.KafkaTrigger.FunctionsHostBuilder;
public class KafkaTrigger(IMessageSession messageSession, ILogger logger)
{
- readonly IMessageSession messageSession = messageSession;
- readonly ILogger logger = logger;
-
#region KafkaTrigger
[Function(nameof(ElectricityUsage))]
public async Task ElectricityUsage([KafkaTrigger("LocalKafkaBroker", "topic", ConsumerGroup = "$Default")] string eventData,
FunctionContext context)
{
-
var eventValue = JsonNode.Parse(eventData)["Value"]?.ToString();
var electricityUsage = Messages.KafkaMessages.ElectricityUsage.Deserialize(eventValue);
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
index f0a1bb1c5f9..4d0c9f3397f 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
@@ -1,41 +1,29 @@
-using System;
-using System.Threading.Tasks;
-using AzureFunctions.Messages.NServiceBusMessages;
+using AzureFunctions.Messages.NServiceBusMessages;
+using Microsoft.Azure.Functions.Worker.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using NServiceBus;
-namespace AzureFunctions.KafkaTrigger.FunctionsHostBuilder;
+#region SetupNServiceBusSendOnly
-public class Program
-{
- public static async Task Main()
- {
- #region SetupNServiceBusSendOnly
+var builder = FunctionsApplication.CreateBuilder(args);
- var host = new HostBuilder()
- .ConfigureServices(async services =>
- {
- var cfg = new EndpointConfiguration("SendOnly");
- cfg.SendOnly();
- cfg.UseSerialization();
+var cfg = new EndpointConfiguration("SendOnly");
+cfg.SendOnly();
+cfg.UseSerialization();
- var connectionString = Environment.GetEnvironmentVariable("AzureWebJobsServiceBus");
- var transport = new AzureServiceBusTransport(connectionString);
- var routing = cfg.UseTransport(transport);
+var connectionString = Environment.GetEnvironmentVariable("AzureWebJobsServiceBus");
+var transport = new AzureServiceBusTransport(connectionString);
+var routing = cfg.UseTransport(transport);
- routing.RouteToEndpoint(typeof(FollowUp), "Samples.KafkaTrigger.ConsoleEndpoint");
+routing.RouteToEndpoint(typeof(FollowUp), "Samples.KafkaTrigger.ConsoleEndpoint");
- var endpoint = await Endpoint.Start(cfg);
+var endpoint = await Endpoint.Start(cfg);
- // Inject the endpoint in the DI container
- services.AddSingleton(endpoint);
- })
- .ConfigureFunctionsWorkerDefaults()
- .Build();
+// Inject the endpoint in the DI container
+builder.Services.AddSingleton(endpoint);
- #endregion
+var host = builder.Build();
- await host.RunAsync();
- }
-}
\ No newline at end of file
+#endregion
+
+await host.RunAsync();
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
index 9e6ce8c54c9..610d7e0ac7a 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
@@ -1,8 +1,8 @@
{
"version": "2.0",
"extensions": {
- "ServiceBus": {
- "EnableCrossEntityTransactions": true
+ "serviceBus": {
+ "enableCrossEntityTransactions": true
}
}
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/AzureFunctions.Messages.csproj b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/AzureFunctions.Messages.csproj
index 72aec1f4abf..6c47b6d7476 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/AzureFunctions.Messages.csproj
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/AzureFunctions.Messages.csproj
@@ -1,9 +1,13 @@
+
net9.0;net8.0
+ enable
12.0
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/FollowUp.cs b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/FollowUp.cs
index 4403282bf8b..faa6ed2b041 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/FollowUp.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/FollowUp.cs
@@ -1,10 +1,10 @@
-using NServiceBus;
-
-namespace AzureFunctions.Messages.NServiceBusMessages;
+namespace AzureFunctions.Messages.NServiceBusMessages;
public class FollowUp : IMessage
{
public int CustomerId { get; set; }
+
public int UnitId { get; set; }
+
public string Description { get; set; }
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
index 0d0ceb394fd..2e2ce465a49 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
@@ -5,7 +5,9 @@ namespace AzureFunctions.Messages.KafkaMessages;
public class ElectricityUsage
{
public int CustomerId { get; set; }
+
public int UnitId { get; set; }
+
public int CurrentUsage { get; set; }
public static string Serialize(ElectricityUsage electricityUsage)
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/ConsoleEndpoint/Handlers/FollowUpHandler.cs b/samples/azure-functions/service-bus-kafka/ASBS_4/ConsoleEndpoint/Handlers/FollowUpHandler.cs
index b226ef22b34..1f743498b54 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/ConsoleEndpoint/Handlers/FollowUpHandler.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/ConsoleEndpoint/Handlers/FollowUpHandler.cs
@@ -1,5 +1,4 @@
using AzureFunctions.Messages.NServiceBusMessages;
-using NServiceBus;
namespace ConsoleEndpoint.Handlers;
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_4/ConsoleEndpoint/Program.cs b/samples/azure-functions/service-bus-kafka/ASBS_4/ConsoleEndpoint/Program.cs
index c531741a9cd..3744877777e 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_4/ConsoleEndpoint/Program.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_4/ConsoleEndpoint/Program.cs
@@ -1,72 +1,65 @@
using AzureFunctions.Messages.KafkaMessages;
using Confluent.Kafka;
-using NServiceBus;
-class Program
-{
- static async Task Main()
- {
- const string endpointName = "Samples.KafkaTrigger.ConsoleEndpoint";
- Console.Title = endpointName;
+const string endpointName = "Samples.KafkaTrigger.ConsoleEndpoint";
+Console.Title = endpointName;
- var endpointConfiguration = new EndpointConfiguration(endpointName);
- endpointConfiguration.EnableInstallers();
- endpointConfiguration.UseSerialization();
+var endpointConfiguration = new EndpointConfiguration(endpointName);
+endpointConfiguration.EnableInstallers();
+endpointConfiguration.UseSerialization();
- var connectionString = Environment.GetEnvironmentVariable("AzureServiceBus_ConnectionString");
- if (string.IsNullOrWhiteSpace(connectionString))
- {
- throw new Exception("Could not read the 'AzureServiceBus_ConnectionString' environment variable. Check the sample prerequisites.");
- }
+var connectionString = Environment.GetEnvironmentVariable("AzureServiceBus_ConnectionString");
+if (string.IsNullOrWhiteSpace(connectionString))
+{
+ throw new Exception("Could not read the 'AzureServiceBus_ConnectionString' environment variable. Check the sample prerequisites.");
+}
- var transport = new AzureServiceBusTransport(connectionString);
- endpointConfiguration.UseTransport(transport);
+var transport = new AzureServiceBusTransport(connectionString);
+endpointConfiguration.UseTransport(transport);
- var endpointInstance = await Endpoint.Start(endpointConfiguration);
+var endpointInstance = await Endpoint.Start(endpointConfiguration);
- var config = new ProducerConfig
- {
- BootstrapServers = "localhost:9094",
- ClientId = "producer-1",
- BatchSize = 50
- };
+var config = new ProducerConfig
+{
+ BootstrapServers = "localhost:9094",
+ ClientId = "producer-1",
+ BatchSize = 50
+};
- Console.WriteLine("Press '[enter]' to send a 100 events using Kafka and wait for a possible response...");
- Console.WriteLine("Press any other key to exit");
+Console.WriteLine("Press '[enter]' to send a 100 events using Kafka and wait for a possible response...");
+Console.WriteLine("Press any other key to exit");
- using (var producer = new ProducerBuilder(config)
- .Build())
- {
- while (true)
- {
- var key = Console.ReadKey();
- Console.WriteLine();
-
- if (key.Key != ConsoleKey.Enter)
- {
- break;
- }
+using (var producer = new ProducerBuilder(config)
+ .Build())
+{
+ while (true)
+ {
+ var key = Console.ReadKey();
+ Console.WriteLine();
- for (int i = 0; i < 100; i++)
- {
- #region ProduceEvent
+ if (key.Key != ConsoleKey.Enter)
+ {
+ break;
+ }
- var electricityUsage = new ElectricityUsage() { CustomerId = 42, CurrentUsage = i, UnitId = 1337 };
+ for (int i = 0; i < 100; i++)
+ {
+ #region ProduceEvent
- var message = new Message
- {
- Value = ElectricityUsage.Serialize(electricityUsage)
- };
+ var electricityUsage = new ElectricityUsage() { CustomerId = 42, CurrentUsage = i, UnitId = 1337 };
- var deliveryResult = await producer.ProduceAsync("myKafkaTopic", message);
+ var message = new Message
+ {
+ Value = ElectricityUsage.Serialize(electricityUsage)
+ };
- #endregion
- }
+ var deliveryResult = await producer.ProduceAsync("myKafkaTopic", message);
- Console.WriteLine("100 messages sent");
- }
+ #endregion
}
- await endpointInstance.Stop();
+ Console.WriteLine("100 messages sent");
}
-}
\ No newline at end of file
+}
+
+await endpointInstance.Stop();
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
index 6de882268ad..accd58a1c65 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
+++ b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
@@ -1,22 +1,28 @@
+
net9.0;net8.0
+ Exe
v4
+ enable
12.0
- Exe
+
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
index 316a7aa6044..307e45a7f29 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
@@ -1,24 +1,18 @@
-using Microsoft.Azure.Functions.Worker;
-using Microsoft.Extensions.Logging;
-using NServiceBus;
-using System.Threading.Tasks;
+using System.Text.Json.Nodes;
using AzureFunctions.Messages.NServiceBusMessages;
-using System.Text.Json.Nodes;
+using Microsoft.Azure.Functions.Worker;
+using Microsoft.Extensions.Logging;
namespace AzureFunctions.KafkaTrigger.FunctionsHostBuilder;
public class KafkaTrigger(IMessageSession messageSession, ILogger logger)
{
- readonly IMessageSession messageSession = messageSession;
- readonly ILogger logger = logger;
-
#region KafkaTrigger
[Function(nameof(ElectricityUsage))]
public async Task ElectricityUsage([KafkaTrigger("LocalKafkaBroker", "topic", ConsumerGroup = "$Default")] string eventData,
FunctionContext context)
{
-
var eventValue = JsonNode.Parse(eventData)["Value"]?.ToString();
var electricityUsage = Messages.KafkaMessages.ElectricityUsage.Deserialize(eventValue);
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
index 67857c6d77e..25cd8bc1509 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
@@ -1,41 +1,29 @@
-using System;
-using System.Threading.Tasks;
-using AzureFunctions.Messages.NServiceBusMessages;
+using AzureFunctions.Messages.NServiceBusMessages;
+using Microsoft.Azure.Functions.Worker.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
-using NServiceBus;
-namespace AzureFunctions.KafkaTrigger.FunctionsHostBuilder;
+#region SetupNServiceBusSendOnly
-public class Program
-{
- public static async Task Main()
- {
- #region SetupNServiceBusSendOnly
+var builder = FunctionsApplication.CreateBuilder(args);
- var host = new HostBuilder()
- .ConfigureServices(async services =>
- {
- var cfg = new EndpointConfiguration("SendOnly");
- cfg.SendOnly();
- cfg.UseSerialization();
+var cfg = new EndpointConfiguration("SendOnly");
+cfg.SendOnly();
+cfg.UseSerialization();
- var connectionString = Environment.GetEnvironmentVariable("AzureWebJobsServiceBus");
- var transport = new AzureServiceBusTransport(connectionString, TopicTopology.Default);
- var routing = cfg.UseTransport(transport);
+var connectionString = Environment.GetEnvironmentVariable("AzureWebJobsServiceBus");
+var transport = new AzureServiceBusTransport(connectionString, TopicTopology.Default);
+var routing = cfg.UseTransport(transport);
- routing.RouteToEndpoint(typeof(FollowUp), "Samples.KafkaTrigger.ConsoleEndpoint");
+routing.RouteToEndpoint(typeof(FollowUp), "Samples.KafkaTrigger.ConsoleEndpoint");
- var endpoint = await Endpoint.Start(cfg);
+var endpoint = await Endpoint.Start(cfg);
- // Inject the endpoint in the DI container
- services.AddSingleton(endpoint);
- })
- .ConfigureFunctionsWorkerDefaults()
- .Build();
+// Inject the endpoint in the DI container
+builder.Services.AddSingleton(endpoint);
- #endregion
+var host = builder.Build();
- await host.RunAsync();
- }
-}
\ No newline at end of file
+#endregion
+
+await host.RunAsync();
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
index 9e6ce8c54c9..610d7e0ac7a 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
+++ b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
@@ -1,8 +1,8 @@
{
"version": "2.0",
"extensions": {
- "ServiceBus": {
- "EnableCrossEntityTransactions": true
+ "serviceBus": {
+ "enableCrossEntityTransactions": true
}
}
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/AzureFunctions.Messages.csproj b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/AzureFunctions.Messages.csproj
index 72aec1f4abf..6ba4680348d 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/AzureFunctions.Messages.csproj
+++ b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/AzureFunctions.Messages.csproj
@@ -1,9 +1,12 @@
+
net9.0;net8.0
12.0
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/FollowUp.cs b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/FollowUp.cs
index 4403282bf8b..067896374a7 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/FollowUp.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/FollowUp.cs
@@ -5,6 +5,8 @@ namespace AzureFunctions.Messages.NServiceBusMessages;
public class FollowUp : IMessage
{
public int CustomerId { get; set; }
+
public int UnitId { get; set; }
+
public string Description { get; set; }
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
index 0d0ceb394fd..2e2ce465a49 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_5/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
@@ -5,7 +5,9 @@ namespace AzureFunctions.Messages.KafkaMessages;
public class ElectricityUsage
{
public int CustomerId { get; set; }
+
public int UnitId { get; set; }
+
public int CurrentUsage { get; set; }
public static string Serialize(ElectricityUsage electricityUsage)
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_5/ConsoleEndpoint/Program.cs b/samples/azure-functions/service-bus-kafka/ASBS_5/ConsoleEndpoint/Program.cs
index 926daeeb7e7..ca295046510 100644
--- a/samples/azure-functions/service-bus-kafka/ASBS_5/ConsoleEndpoint/Program.cs
+++ b/samples/azure-functions/service-bus-kafka/ASBS_5/ConsoleEndpoint/Program.cs
@@ -1,72 +1,65 @@
using AzureFunctions.Messages.KafkaMessages;
using Confluent.Kafka;
-using NServiceBus;
-class Program
-{
- static async Task Main()
- {
- const string endpointName = "Samples.KafkaTrigger.ConsoleEndpoint";
- Console.Title = endpointName;
+const string endpointName = "Samples.KafkaTrigger.ConsoleEndpoint";
+Console.Title = endpointName;
- var endpointConfiguration = new EndpointConfiguration(endpointName);
- endpointConfiguration.EnableInstallers();
- endpointConfiguration.UseSerialization();
+var endpointConfiguration = new EndpointConfiguration(endpointName);
+endpointConfiguration.EnableInstallers();
+endpointConfiguration.UseSerialization();
- var connectionString = Environment.GetEnvironmentVariable("AzureServiceBus_ConnectionString");
- if (string.IsNullOrWhiteSpace(connectionString))
- {
- throw new Exception("Could not read the 'AzureServiceBus_ConnectionString' environment variable. Check the sample prerequisites.");
- }
+var connectionString = Environment.GetEnvironmentVariable("AzureServiceBus_ConnectionString");
+if (string.IsNullOrWhiteSpace(connectionString))
+{
+ throw new Exception("Could not read the 'AzureServiceBus_ConnectionString' environment variable. Check the sample prerequisites.");
+}
- var transport = new AzureServiceBusTransport(connectionString, TopicTopology.Default);
- endpointConfiguration.UseTransport(transport);
+var transport = new AzureServiceBusTransport(connectionString, TopicTopology.Default);
+endpointConfiguration.UseTransport(transport);
- var endpointInstance = await Endpoint.Start(endpointConfiguration);
+var endpointInstance = await Endpoint.Start(endpointConfiguration);
- var config = new ProducerConfig
- {
- BootstrapServers = "localhost:9094",
- ClientId = "producer-1",
- BatchSize = 50
- };
+var config = new ProducerConfig
+{
+ BootstrapServers = "localhost:9094",
+ ClientId = "producer-1",
+ BatchSize = 50
+};
- Console.WriteLine("Press '[enter]' to send a 100 events using Kafka and wait for a possible response...");
- Console.WriteLine("Press any other key to exit");
+Console.WriteLine("Press '[enter]' to send a 100 events using Kafka and wait for a possible response...");
+Console.WriteLine("Press any other key to exit");
- using (var producer = new ProducerBuilder(config)
- .Build())
- {
- while (true)
- {
- var key = Console.ReadKey();
- Console.WriteLine();
-
- if (key.Key != ConsoleKey.Enter)
- {
- break;
- }
+using (var producer = new ProducerBuilder(config)
+ .Build())
+{
+ while (true)
+ {
+ var key = Console.ReadKey();
+ Console.WriteLine();
- for (int i = 0; i < 100; i++)
- {
- #region ProduceEvent
+ if (key.Key != ConsoleKey.Enter)
+ {
+ break;
+ }
- var electricityUsage = new ElectricityUsage() { CustomerId = 42, CurrentUsage = i, UnitId = 1337 };
+ for (int i = 0; i < 100; i++)
+ {
+ #region ProduceEvent
- var message = new Message
- {
- Value = ElectricityUsage.Serialize(electricityUsage)
- };
+ var electricityUsage = new ElectricityUsage() { CustomerId = 42, CurrentUsage = i, UnitId = 1337 };
- var deliveryResult = await producer.ProduceAsync("myKafkaTopic", message);
+ var message = new Message
+ {
+ Value = ElectricityUsage.Serialize(electricityUsage)
+ };
- #endregion
- }
+ var deliveryResult = await producer.ProduceAsync("myKafkaTopic", message);
- Console.WriteLine("100 messages sent");
- }
+ #endregion
}
- await endpointInstance.Stop();
+ Console.WriteLine("100 messages sent");
}
-}
\ No newline at end of file
+}
+
+await endpointInstance.Stop();
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/.run/Everything.run.xml b/samples/azure-functions/service-bus-kafka/ASBS_6/.run/Everything.run.xml
new file mode 100644
index 00000000000..04581b1dd0a
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/.run/Everything.run.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions-Kafka.StartupProjects.txt b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions-Kafka.StartupProjects.txt
new file mode 100644
index 00000000000..8c2a0262bff
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions-Kafka.StartupProjects.txt
@@ -0,0 +1,2 @@
+AzureFunctions.KafkaTrigger.FunctionsHostBuilder\AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
+ConsoleEndpoint\ConsoleEndpoint.csproj
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions-Kafka.sln b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions-Kafka.sln
new file mode 100644
index 00000000000..a07dba312fd
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions-Kafka.sln
@@ -0,0 +1,64 @@
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29728.190
+MinimumVisualStudioVersion = 15.0.26730.12
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureFunctions.Messages", "AzureFunctions.Messages\AzureFunctions.Messages.csproj", "{8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureFunctions.KafkaTrigger.FunctionsHostBuilder", "AzureFunctions.KafkaTrigger.FunctionsHostBuilder\AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj", "{D3C0429A-08D8-41B0-B51A-F31A047959BD}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleEndpoint", "ConsoleEndpoint\ConsoleEndpoint.csproj", "{A2800EC9-AB77-4CDB-A620-224295A10951}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Debug|x64.Build.0 = Debug|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Debug|x86.Build.0 = Debug|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Release|x64.ActiveCfg = Release|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Release|x64.Build.0 = Release|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Release|x86.ActiveCfg = Release|Any CPU
+ {8EB0DD38-EF11-4C6E-A8F6-9128463D22B9}.Release|x86.Build.0 = Release|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Debug|x64.Build.0 = Debug|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Debug|x86.Build.0 = Debug|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Release|x64.ActiveCfg = Release|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Release|x64.Build.0 = Release|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Release|x86.ActiveCfg = Release|Any CPU
+ {D3C0429A-08D8-41B0-B51A-F31A047959BD}.Release|x86.Build.0 = Release|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Debug|x64.Build.0 = Debug|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Debug|x86.Build.0 = Debug|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Release|x64.ActiveCfg = Release|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Release|x64.Build.0 = Release|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Release|x86.ActiveCfg = Release|Any CPU
+ {A2800EC9-AB77-4CDB-A620-224295A10951}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {6C66C18C-5075-4811-AF40-2997E8863F3B}
+ EndGlobalSection
+EndGlobal
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
new file mode 100644
index 00000000000..b9bb30d249e
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/AzureFunctions.KafkaTrigger.FunctionsHostBuilder.csproj
@@ -0,0 +1,28 @@
+
+
+
+ net10.0
+ Exe
+ v4
+ enable
+ 14.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
new file mode 100644
index 00000000000..307e45a7f29
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/KafkaTrigger.cs
@@ -0,0 +1,42 @@
+using System.Text.Json.Nodes;
+using AzureFunctions.Messages.NServiceBusMessages;
+using Microsoft.Azure.Functions.Worker;
+using Microsoft.Extensions.Logging;
+
+namespace AzureFunctions.KafkaTrigger.FunctionsHostBuilder;
+
+public class KafkaTrigger(IMessageSession messageSession, ILogger logger)
+{
+ #region KafkaTrigger
+
+ [Function(nameof(ElectricityUsage))]
+ public async Task ElectricityUsage([KafkaTrigger("LocalKafkaBroker", "topic", ConsumerGroup = "$Default")] string eventData,
+ FunctionContext context)
+ {
+ var eventValue = JsonNode.Parse(eventData)["Value"]?.ToString();
+ var electricityUsage = Messages.KafkaMessages.ElectricityUsage.Deserialize(eventValue);
+
+ logger.LogInformation("Received Kafka event with usage: {CurrentUsage}", electricityUsage.CurrentUsage);
+
+ if (IsUsageAboveAverage(electricityUsage.CurrentUsage))
+ {
+ var message = new FollowUp
+ {
+ CustomerId = electricityUsage.CustomerId,
+ UnitId = electricityUsage.UnitId,
+ Description = $"Usage over monthly average at [{electricityUsage.CurrentUsage}] units"
+ };
+
+ await messageSession.Send(message);
+ }
+ }
+
+ #endregion
+
+ // Because Kafka is an event stream, more messages arrive there than we might be able to handle with
+ // Azure ServiceBus. For demo purposes an alert is raised at the exact usage of 42.
+ static bool IsUsageAboveAverage(int currentUsage)
+ {
+ return currentUsage == 42;
+ }
+}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
new file mode 100644
index 00000000000..25cd8bc1509
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/Program.cs
@@ -0,0 +1,29 @@
+using AzureFunctions.Messages.NServiceBusMessages;
+using Microsoft.Azure.Functions.Worker.Builder;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+#region SetupNServiceBusSendOnly
+
+var builder = FunctionsApplication.CreateBuilder(args);
+
+var cfg = new EndpointConfiguration("SendOnly");
+cfg.SendOnly();
+cfg.UseSerialization();
+
+var connectionString = Environment.GetEnvironmentVariable("AzureWebJobsServiceBus");
+var transport = new AzureServiceBusTransport(connectionString, TopicTopology.Default);
+var routing = cfg.UseTransport(transport);
+
+routing.RouteToEndpoint(typeof(FollowUp), "Samples.KafkaTrigger.ConsoleEndpoint");
+
+var endpoint = await Endpoint.Start(cfg);
+
+// Inject the endpoint in the DI container
+builder.Services.AddSingleton(endpoint);
+
+var host = builder.Build();
+
+#endregion
+
+await host.RunAsync();
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
new file mode 100644
index 00000000000..610d7e0ac7a
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.KafkaTrigger.FunctionsHostBuilder/host.json
@@ -0,0 +1,8 @@
+{
+ "version": "2.0",
+ "extensions": {
+ "serviceBus": {
+ "enableCrossEntityTransactions": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/AzureFunctions.Messages.csproj b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/AzureFunctions.Messages.csproj
new file mode 100644
index 00000000000..477f6b613c9
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/AzureFunctions.Messages.csproj
@@ -0,0 +1,12 @@
+
+
+
+ net10.0
+ 14.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/FollowUp.cs b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/FollowUp.cs
new file mode 100644
index 00000000000..067896374a7
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/FollowUp.cs
@@ -0,0 +1,12 @@
+using NServiceBus;
+
+namespace AzureFunctions.Messages.NServiceBusMessages;
+
+public class FollowUp : IMessage
+{
+ public int CustomerId { get; set; }
+
+ public int UnitId { get; set; }
+
+ public string Description { get; set; }
+}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
new file mode 100644
index 00000000000..2e2ce465a49
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/AzureFunctions.Messages/KafkaMessages/ElectricityUsage.cs
@@ -0,0 +1,22 @@
+using System.Text.Json;
+
+namespace AzureFunctions.Messages.KafkaMessages;
+
+public class ElectricityUsage
+{
+ public int CustomerId { get; set; }
+
+ public int UnitId { get; set; }
+
+ public int CurrentUsage { get; set; }
+
+ public static string Serialize(ElectricityUsage electricityUsage)
+ {
+ return JsonSerializer.Serialize(electricityUsage);
+ }
+
+ public static ElectricityUsage Deserialize(string value)
+ {
+ return JsonSerializer.Deserialize(value);
+ }
+}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/ConsoleEndpoint.csproj b/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/ConsoleEndpoint.csproj
new file mode 100644
index 00000000000..2a33af3d8b3
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/ConsoleEndpoint.csproj
@@ -0,0 +1,20 @@
+
+
+
+ net10.0
+ Exe
+ enable
+ enable
+ 14.0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/Handlers/FollowUpHandler.cs b/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/Handlers/FollowUpHandler.cs
new file mode 100644
index 00000000000..b226ef22b34
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/Handlers/FollowUpHandler.cs
@@ -0,0 +1,14 @@
+using AzureFunctions.Messages.NServiceBusMessages;
+using NServiceBus;
+
+namespace ConsoleEndpoint.Handlers;
+
+public class FollowUpHandler : IHandleMessages
+{
+ public Task Handle(FollowUp message, IMessageHandlerContext context)
+ {
+ Console.WriteLine($"User [{message.CustomerId}] for unit [{message.UnitId}] has message: {message.Description}");
+
+ return Task.CompletedTask;
+ }
+}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/Program.cs b/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/Program.cs
new file mode 100644
index 00000000000..ca295046510
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/ConsoleEndpoint/Program.cs
@@ -0,0 +1,65 @@
+using AzureFunctions.Messages.KafkaMessages;
+using Confluent.Kafka;
+
+const string endpointName = "Samples.KafkaTrigger.ConsoleEndpoint";
+Console.Title = endpointName;
+
+var endpointConfiguration = new EndpointConfiguration(endpointName);
+endpointConfiguration.EnableInstallers();
+endpointConfiguration.UseSerialization();
+
+var connectionString = Environment.GetEnvironmentVariable("AzureServiceBus_ConnectionString");
+if (string.IsNullOrWhiteSpace(connectionString))
+{
+ throw new Exception("Could not read the 'AzureServiceBus_ConnectionString' environment variable. Check the sample prerequisites.");
+}
+
+var transport = new AzureServiceBusTransport(connectionString, TopicTopology.Default);
+endpointConfiguration.UseTransport(transport);
+
+var endpointInstance = await Endpoint.Start(endpointConfiguration);
+
+var config = new ProducerConfig
+{
+ BootstrapServers = "localhost:9094",
+ ClientId = "producer-1",
+ BatchSize = 50
+};
+
+Console.WriteLine("Press '[enter]' to send a 100 events using Kafka and wait for a possible response...");
+Console.WriteLine("Press any other key to exit");
+
+using (var producer = new ProducerBuilder(config)
+ .Build())
+{
+ while (true)
+ {
+ var key = Console.ReadKey();
+ Console.WriteLine();
+
+ if (key.Key != ConsoleKey.Enter)
+ {
+ break;
+ }
+
+ for (int i = 0; i < 100; i++)
+ {
+ #region ProduceEvent
+
+ var electricityUsage = new ElectricityUsage() { CustomerId = 42, CurrentUsage = i, UnitId = 1337 };
+
+ var message = new Message
+ {
+ Value = ElectricityUsage.Serialize(electricityUsage)
+ };
+
+ var deliveryResult = await producer.ProduceAsync("myKafkaTopic", message);
+
+ #endregion
+ }
+
+ Console.WriteLine("100 messages sent");
+ }
+}
+
+await endpointInstance.Stop();
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/docker-compose.yml b/samples/azure-functions/service-bus-kafka/ASBS_6/docker-compose.yml
new file mode 100644
index 00000000000..4d46bb46e46
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/docker-compose.yml
@@ -0,0 +1,21 @@
+version: "3"
+services:
+ kafka:
+ image: "docker.io/bitnami/kafka:3.5"
+ hostname: kafka
+ ports:
+ - "9092:9092"
+ - '9094:9094'
+ environment:
+ # KRaft settings
+ - KAFKA_CFG_NODE_ID=0
+ - KAFKA_CFG_PROCESS_ROLES=controller,broker
+ - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
+ # Listeners
+ - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
+ - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092,EXTERNAL://localhost:9094
+ - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
+ - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
+ - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
+ # Memory
+ - KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/local.settings.json b/samples/azure-functions/service-bus-kafka/ASBS_6/local.settings.json
new file mode 100644
index 00000000000..fbadfbed888
--- /dev/null
+++ b/samples/azure-functions/service-bus-kafka/ASBS_6/local.settings.json
@@ -0,0 +1,10 @@
+{
+ "IsEncrypted": false,
+ "Values": {
+ "AzureWebJobsStorage": "UseDevelopmentStorage=true",
+ "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
+ "LocalKafkaBroker": "localhost:9094",
+ "topic": "myKafkaTopic",
+ "AzureWebJobsServiceBus": ""
+ }
+}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-kafka/ASBS_6/prerelease.txt b/samples/azure-functions/service-bus-kafka/ASBS_6/prerelease.txt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
index 526b55de289..b489e3959fe 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
@@ -1,21 +1,27 @@
+
net9.0;net8.0
v4
Exe
+ enable
12.0
+
+
+
+
+
-
+
-
-
-
+
+
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
index c5bd0796b4b..fa0454b7d38 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
@@ -1,5 +1,4 @@
-using System.Threading.Tasks;
-using NServiceBus;
+using NServiceBus;
using NServiceBus.Logging;
#region FollowupMessageHandler
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/HttpSender.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
index 7872928de29..37785ad0113 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
@@ -1,20 +1,11 @@
using System.Net;
-using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
using NServiceBus;
-
-class HttpSender
+class HttpSender(IFunctionEndpoint functionEndpoint)
{
- readonly IFunctionEndpoint functionEndpoint;
-
- public HttpSender(IFunctionEndpoint functionEndpoint)
- {
- this.functionEndpoint = functionEndpoint;
- }
-
[Function("HttpSender")]
public async Task Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestData req,
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/Program.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/Program.cs
index cc4e9583f45..d3889ce7928 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/Program.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/Program.cs
@@ -1,20 +1,13 @@
using Microsoft.Extensions.Hosting;
using NServiceBus;
-using System.Threading.Tasks;
#region configuration-with-function-host-builder
-[assembly:NServiceBusTriggerFunction("ASBWorkerEndpoint")]
+[assembly: NServiceBusTriggerFunction("ASBWorkerEndpoint")]
-public class Program
-{
- public static Task Main()
- {
- var host = new HostBuilder()
- .ConfigureFunctionsWorkerDefaults()
- .UseNServiceBus()
- .Build();
+var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus()
+ .Build();
- return host.RunAsync();
- }
-}
+await host.RunAsync();
#endregion
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
index 9c9a34bb501..29e93c5bd71 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
@@ -1,5 +1,4 @@
-using System.Threading.Tasks;
-using NServiceBus;
+using NServiceBus;
using NServiceBus.Logging;
#region TriggerMessageHandler
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/local.settings.json b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/local.settings.json
index e211dc9a699..887fa5787c4 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/local.settings.json
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.ASBTrigger.Worker/local.settings.json
@@ -3,7 +3,6 @@
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
-
"AzureWebJobsServiceBus": ""
}
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/AzureFunctions.Messages.csproj b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/AzureFunctions.Messages.csproj
index 05b765b0196..bda5b7c20bf 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/AzureFunctions.Messages.csproj
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/AzureFunctions.Messages.csproj
@@ -1,9 +1,13 @@
+
net9.0;net8.0
+ enable
12.0
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/FollowupMessage.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/FollowupMessage.cs
index ced2b6650e0..24e6e670710 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/FollowupMessage.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/FollowupMessage.cs
@@ -1,5 +1 @@
-using NServiceBus;
-
-public class FollowupMessage : IMessage
-{
-}
\ No newline at end of file
+public class FollowupMessage : IMessage;
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/TriggerMessage.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/TriggerMessage.cs
index cb463023124..c18a35c3b33 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/TriggerMessage.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_4/AzureFunctions.Messages/TriggerMessage.cs
@@ -1,5 +1 @@
-using NServiceBus;
-
-public class TriggerMessage : IMessage
-{
-}
\ No newline at end of file
+public class TriggerMessage : IMessage;
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
index 81f75f29656..3be22782330 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
@@ -1,21 +1,27 @@
+
net9.0;net8.0
v4
Exe
+ enable
12.0
+
+
+
+
+
-
+
-
-
-
+
+
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
index c5bd0796b4b..b8b79b0821a 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
@@ -1,6 +1,4 @@
-using System.Threading.Tasks;
-using NServiceBus;
-using NServiceBus.Logging;
+using NServiceBus.Logging;
#region FollowupMessageHandler
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/HttpSender.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
index 7872928de29..185710bcf0d 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
@@ -1,20 +1,10 @@
using System.Net;
-using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
-using NServiceBus;
-
-class HttpSender
+class HttpSender(IFunctionEndpoint functionEndpoint)
{
- readonly IFunctionEndpoint functionEndpoint;
-
- public HttpSender(IFunctionEndpoint functionEndpoint)
- {
- this.functionEndpoint = functionEndpoint;
- }
-
[Function("HttpSender")]
public async Task Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestData req,
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/Program.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/Program.cs
index cc4e9583f45..986ab246fb5 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/Program.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/Program.cs
@@ -1,20 +1,12 @@
using Microsoft.Extensions.Hosting;
-using NServiceBus;
-using System.Threading.Tasks;
#region configuration-with-function-host-builder
-[assembly:NServiceBusTriggerFunction("ASBWorkerEndpoint")]
+[assembly: NServiceBusTriggerFunction("ASBWorkerEndpoint")]
-public class Program
-{
- public static Task Main()
- {
- var host = new HostBuilder()
- .ConfigureFunctionsWorkerDefaults()
- .UseNServiceBus()
- .Build();
+var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus()
+ .Build();
- return host.RunAsync();
- }
-}
+await host.RunAsync();
#endregion
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
index 9c9a34bb501..d8e5d25ac2a 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
@@ -1,6 +1,4 @@
-using System.Threading.Tasks;
-using NServiceBus;
-using NServiceBus.Logging;
+using NServiceBus.Logging;
#region TriggerMessageHandler
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/local.settings.json b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/local.settings.json
index e211dc9a699..887fa5787c4 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/local.settings.json
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.ASBTrigger.Worker/local.settings.json
@@ -3,7 +3,6 @@
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
-
"AzureWebJobsServiceBus": ""
}
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/AzureFunctions.Messages.csproj b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/AzureFunctions.Messages.csproj
index 72aec1f4abf..6c47b6d7476 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/AzureFunctions.Messages.csproj
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/AzureFunctions.Messages.csproj
@@ -1,9 +1,13 @@
+
net9.0;net8.0
+ enable
12.0
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/FollowupMessage.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/FollowupMessage.cs
index ced2b6650e0..73b9b5614ce 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/FollowupMessage.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/FollowupMessage.cs
@@ -1,5 +1 @@
-using NServiceBus;
-
-public class FollowupMessage : IMessage
-{
-}
\ No newline at end of file
+public class FollowupMessage : IMessage;
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/TriggerMessage.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/TriggerMessage.cs
index cb463023124..c18a35c3b33 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/TriggerMessage.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_5/AzureFunctions.Messages/TriggerMessage.cs
@@ -1,5 +1 @@
-using NServiceBus;
-
-public class TriggerMessage : IMessage
-{
-}
\ No newline at end of file
+public class TriggerMessage : IMessage;
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
index 6673cba97b6..e83d954fe07 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
@@ -1,21 +1,27 @@
+
net9.0;net8.0
v4
Exe
+ enable
12.0
+
+
+
+
+
-
-
-
-
+
+
+
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
index 682e680d5c4..b1140bb6843 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
@@ -1,12 +1,9 @@
-using System.Threading.Tasks;
-using Microsoft.Extensions.Logging;
-using NServiceBus;
+using Microsoft.Extensions.Logging;
#region FollowupMessageHandler
public class FollowupMessageHandler(ILogger logger) : IHandleMessages
{
-
public Task Handle(FollowupMessage message, IMessageHandlerContext context)
{
logger.LogWarning("Handling {MessageType} in {HandlerType}.", nameof(FollowupMessage), nameof(FollowupMessageHandler));
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/HttpSender.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
index 700943bee70..185710bcf0d 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
@@ -1,10 +1,7 @@
using System.Net;
-using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
-using NServiceBus;
-
class HttpSender(IFunctionEndpoint functionEndpoint)
{
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/Program.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/Program.cs
index e27c90f6e01..d343f0634af 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/Program.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/Program.cs
@@ -1,22 +1,12 @@
using Microsoft.Extensions.Hosting;
-using NServiceBus;
-using System.Threading.Tasks;
-using Microsoft.Extensions.DependencyInjection;
-using NServiceBus.Transport.AzureServiceBus;
#region configuration-with-function-host-builder
-[assembly:NServiceBusTriggerFunction("ASBWorkerEndpoint")]
+[assembly: NServiceBusTriggerFunction("ASBWorkerEndpoint")]
-public class Program
-{
- public static Task Main()
- {
- var host = new HostBuilder()
- .ConfigureFunctionsWorkerDefaults()
- .UseNServiceBus()
- .Build();
+var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus()
+ .Build();
- return host.RunAsync();
- }
-}
+await host.RunAsync();
#endregion
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
index 97a640958ee..dc76ce67580 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
@@ -1,6 +1,4 @@
-using System.Threading.Tasks;
-using Microsoft.Extensions.Logging;
-using NServiceBus;
+using Microsoft.Extensions.Logging;
#region TriggerMessageHandler
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/local.settings.json b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/local.settings.json
index 417caabadf3..887fa5787c4 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/local.settings.json
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.ASBTrigger.Worker/local.settings.json
@@ -3,6 +3,6 @@
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
- "AzureWebJobsServiceBus": "",
+ "AzureWebJobsServiceBus": ""
}
}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/AzureFunctions.Messages.csproj b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/AzureFunctions.Messages.csproj
index 72aec1f4abf..6c47b6d7476 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/AzureFunctions.Messages.csproj
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/AzureFunctions.Messages.csproj
@@ -1,9 +1,13 @@
+
net9.0;net8.0
+ enable
12.0
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/FollowupMessage.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/FollowupMessage.cs
index 19d20705878..24e6e670710 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/FollowupMessage.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/FollowupMessage.cs
@@ -1,3 +1 @@
-using NServiceBus;
-
-public class FollowupMessage : IMessage;
\ No newline at end of file
+public class FollowupMessage : IMessage;
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/TriggerMessage.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/TriggerMessage.cs
index d08a1b561be..c18a35c3b33 100644
--- a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/TriggerMessage.cs
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_6/AzureFunctions.Messages/TriggerMessage.cs
@@ -1,3 +1 @@
-using NServiceBus;
-
-public class TriggerMessage : IMessage;
\ No newline at end of file
+public class TriggerMessage : IMessage;
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
new file mode 100644
index 00000000000..cb23b0291e2
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/AzureFunctions.ASBTrigger.Worker.csproj
@@ -0,0 +1,27 @@
+
+
+
+ net10.0
+ v4
+ Exe
+ enable
+ 14.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
new file mode 100644
index 00000000000..b1140bb6843
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/FollowupMessageHandler.cs
@@ -0,0 +1,14 @@
+using Microsoft.Extensions.Logging;
+
+#region FollowupMessageHandler
+
+public class FollowupMessageHandler(ILogger logger) : IHandleMessages
+{
+ public Task Handle(FollowupMessage message, IMessageHandlerContext context)
+ {
+ logger.LogWarning("Handling {MessageType} in {HandlerType}.", nameof(FollowupMessage), nameof(FollowupMessageHandler));
+ return Task.CompletedTask;
+ }
+}
+
+#endregion
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/HttpSender.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
new file mode 100644
index 00000000000..185710bcf0d
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/HttpSender.cs
@@ -0,0 +1,25 @@
+using System.Net;
+using Microsoft.Azure.Functions.Worker;
+using Microsoft.Azure.Functions.Worker.Http;
+using Microsoft.Extensions.Logging;
+
+class HttpSender(IFunctionEndpoint functionEndpoint)
+{
+ [Function("HttpSender")]
+ public async Task Run(
+ [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestData req,
+ FunctionContext executionContext)
+ {
+ var logger = executionContext.GetLogger();
+ logger.LogInformation("C# HTTP trigger function received a request.");
+
+ var sendOptions = new SendOptions();
+ sendOptions.RouteToThisEndpoint();
+
+ await functionEndpoint.Send(new TriggerMessage(), sendOptions, executionContext);
+
+ var r = req.CreateResponse(HttpStatusCode.OK);
+ await r.WriteStringAsync($"{nameof(TriggerMessage)} sent.");
+ return r;
+ }
+}
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/Program.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/Program.cs
new file mode 100644
index 00000000000..d343f0634af
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/Program.cs
@@ -0,0 +1,12 @@
+using Microsoft.Extensions.Hosting;
+
+#region configuration-with-function-host-builder
+[assembly: NServiceBusTriggerFunction("ASBWorkerEndpoint")]
+
+var host = new HostBuilder()
+ .ConfigureFunctionsWorkerDefaults()
+ .UseNServiceBus()
+ .Build();
+
+await host.RunAsync();
+#endregion
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
new file mode 100644
index 00000000000..dc76ce67580
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/TriggerMessageHandler.cs
@@ -0,0 +1,16 @@
+using Microsoft.Extensions.Logging;
+
+#region TriggerMessageHandler
+
+public class TriggerMessageHandler(ILogger logger) : IHandleMessages
+{
+
+ public Task Handle(TriggerMessage message, IMessageHandlerContext context)
+ {
+ logger.LogWarning("Handling {MessageType} in {HandlerType}", nameof(TriggerMessage), nameof(TriggerMessageHandler));
+
+ return context.SendLocal(new FollowupMessage());
+ }
+}
+
+#endregion
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/host.json b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/host.json
new file mode 100644
index 00000000000..b9f92c0dee3
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/host.json
@@ -0,0 +1,3 @@
+{
+ "version": "2.0"
+}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/local.settings.json b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/local.settings.json
new file mode 100644
index 00000000000..887fa5787c4
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.ASBTrigger.Worker/local.settings.json
@@ -0,0 +1,8 @@
+{
+ "IsEncrypted": false,
+ "Values": {
+ "AzureWebJobsStorage": "UseDevelopmentStorage=true",
+ "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
+ "AzureWebJobsServiceBus": ""
+ }
+}
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/AzureFunctions.Messages.csproj b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/AzureFunctions.Messages.csproj
new file mode 100644
index 00000000000..84465a06ae1
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/AzureFunctions.Messages.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net10.0
+ enable
+ 14.0
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/FollowupMessage.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/FollowupMessage.cs
new file mode 100644
index 00000000000..24e6e670710
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/FollowupMessage.cs
@@ -0,0 +1 @@
+public class FollowupMessage : IMessage;
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/TriggerMessage.cs b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/TriggerMessage.cs
new file mode 100644
index 00000000000..c18a35c3b33
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctions.Messages/TriggerMessage.cs
@@ -0,0 +1 @@
+public class TriggerMessage : IMessage;
\ No newline at end of file
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctionsWorker-ASB.sln b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctionsWorker-ASB.sln
new file mode 100644
index 00000000000..e659aedde00
--- /dev/null
+++ b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/AzureFunctionsWorker-ASB.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.31624.102
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureFunctions.ASBTrigger.Worker", "AzureFunctions.ASBTrigger.Worker\AzureFunctions.ASBTrigger.Worker.csproj", "{A31F8C23-7BC6-4EF0-851E-C6294DB774D6}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureFunctions.Messages", "AzureFunctions.Messages\AzureFunctions.Messages.csproj", "{6A678428-0512-47AF-A2B8-BD5084CD7493}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A31F8C23-7BC6-4EF0-851E-C6294DB774D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A31F8C23-7BC6-4EF0-851E-C6294DB774D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A31F8C23-7BC6-4EF0-851E-C6294DB774D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A31F8C23-7BC6-4EF0-851E-C6294DB774D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6A678428-0512-47AF-A2B8-BD5084CD7493}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6A678428-0512-47AF-A2B8-BD5084CD7493}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6A678428-0512-47AF-A2B8-BD5084CD7493}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6A678428-0512-47AF-A2B8-BD5084CD7493}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {8F152D3C-160A-49E8-8323-365D464AEBCD}
+ EndGlobalSection
+EndGlobal
diff --git a/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/prerelease.txt b/samples/azure-functions/service-bus-worker/ASBFunctionsWorker_7/prerelease.txt
new file mode 100644
index 00000000000..e69de29bb2d