diff --git a/source/ProcessManager.Orchestrations/Extensions/DependencyInjection/ProcessManagerTopicExtensions.cs b/source/ProcessManager.Orchestrations/Extensions/DependencyInjection/ProcessManagerTopicExtensions.cs new file mode 100644 index 0000000000..aa30801699 --- /dev/null +++ b/source/ProcessManager.Orchestrations/Extensions/DependencyInjection/ProcessManagerTopicExtensions.cs @@ -0,0 +1,34 @@ +// Copyright 2020 Energinet DataHub A/S +// +// Licensed under the Apache License, Version 2.0 (the "License2"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using Energinet.DataHub.ProcessManager.Orchestrations.Extensions.Options; +using Microsoft.Extensions.DependencyInjection; + +namespace Energinet.DataHub.ProcessManager.Orchestrations.Extensions.DependencyInjection; + +public static class ProcessManagerTopicExtensions +{ + /// + /// Add required dependencies to use the Process Manager Service Bus topic. + /// + public static IServiceCollection AddProcessManagerTopic(this IServiceCollection services) + { + services + .AddOptionsWithValidateOnStart() + .BindConfiguration(ProcessManagerTopicOptions.SectionName) + .ValidateDataAnnotations(); + + return services; + } +} diff --git a/source/ProcessManager.Orchestrations/Extensions/Options/ProcessManagerTopicOptions.cs b/source/ProcessManager.Orchestrations/Extensions/Options/ProcessManagerTopicOptions.cs new file mode 100644 index 0000000000..f76fb4a7ab --- /dev/null +++ b/source/ProcessManager.Orchestrations/Extensions/Options/ProcessManagerTopicOptions.cs @@ -0,0 +1,42 @@ +// Copyright 2020 Energinet DataHub A/S +// +// Licensed under the Apache License, Version 2.0 (the "License2"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System.ComponentModel.DataAnnotations; +using Microsoft.Extensions.Configuration; + +namespace Energinet.DataHub.ProcessManager.Orchestrations.Extensions.Options; + +/// +/// Contains options required for the orchestrations app to connect to the +/// ProcessManager Service Bus topic. +/// +public class ProcessManagerTopicOptions +{ + /// + /// Name of the section in the / appsettings.json file + /// + public const string SectionName = "ProcessManagerTopic"; + + /// + /// Name of the ProcessManager Service Bus topic + /// + [Required] + public string TopicName { get; } = string.Empty; + + /// + /// Name of the subscription for BRS026 to the ProcessManager Service Bus topic + /// + [Required] + public string Brs026SubscriptionName { get; } = string.Empty; +} diff --git a/source/ProcessManager.Orchestrations/Processes/BRS_026/V1/RequestCalculatedEnergyTimeSeriesTriggerV1.cs b/source/ProcessManager.Orchestrations/Processes/BRS_026/V1/RequestCalculatedEnergyTimeSeriesTriggerV1.cs index a19b26cbcc..901fcb013a 100644 --- a/source/ProcessManager.Orchestrations/Processes/BRS_026/V1/RequestCalculatedEnergyTimeSeriesTriggerV1.cs +++ b/source/ProcessManager.Orchestrations/Processes/BRS_026/V1/RequestCalculatedEnergyTimeSeriesTriggerV1.cs @@ -15,6 +15,7 @@ using System.Text.Json; using Azure.Messaging.ServiceBus; using Energinet.DataHub.ProcessManager.Orchestrations.Contracts; +using Energinet.DataHub.ProcessManager.Orchestrations.Extensions.Options; using Energinet.DataHub.ProcessManager.Orchestrations.Processes.BRS_026.V1.Models; using Microsoft.Azure.Functions.Worker; using Microsoft.Extensions.Logging; @@ -33,7 +34,11 @@ public class RequestCalculatedEnergyTimeSeriesTriggerV1( /// [Function(nameof(RequestCalculatedEnergyTimeSeriesTriggerV1))] public async Task Run( - [ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] ServiceBusReceivedMessage message) + [ServiceBusTrigger( + $"%{ProcessManagerTopicOptions.SectionName}:{nameof(ProcessManagerTopicOptions.TopicName)}%", + $"%{ProcessManagerTopicOptions.SectionName}:{nameof(ProcessManagerTopicOptions.Brs026SubscriptionName)}%", + Connection = ProcessManagerTopicOptions.SectionName)] + ServiceBusReceivedMessage message) { using var serviceBusMessageLoggerScope = _logger.BeginScope(new { diff --git a/source/ProcessManager.Orchestrations/Program.cs b/source/ProcessManager.Orchestrations/Program.cs index 4c551a5708..f784ced92c 100644 --- a/source/ProcessManager.Orchestrations/Program.cs +++ b/source/ProcessManager.Orchestrations/Program.cs @@ -19,6 +19,7 @@ using Energinet.DataHub.ProcessManagement.Core.Infrastructure.Extensions.DependencyInjection; using Energinet.DataHub.ProcessManagement.Core.Infrastructure.Extensions.Startup; using Energinet.DataHub.ProcessManagement.Core.Infrastructure.Telemetry; +using Energinet.DataHub.ProcessManager.Orchestrations.Extensions.DependencyInjection; using Energinet.DataHub.ProcessManager.Orchestrations.Processes.BRS_023_027.V1; using Energinet.DataHub.ProcessManager.Orchestrations.Processes.BRS_023_027.V1.Model; using Energinet.DataHub.ProcessManager.Orchestrations.Processes.BRS_026.V1; @@ -36,6 +37,7 @@ services.AddNodaTimeForApplication(); // ProcessManager + services.AddProcessManagerTopic(); // => Orchestration Descriptions services.AddProcessManagerForOrchestrations(() => {