Skip to content

Commit

Permalink
Add service bus topic options to orchestration
Browse files Browse the repository at this point in the history
  • Loading branch information
ebbeknudsen committed Nov 19, 2024
1 parent 4e892e4 commit 976bdec
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -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
{
/// <summary>
/// Add required dependencies to use the Process Manager Service Bus topic.
/// </summary>
public static IServiceCollection AddProcessManagerTopic(this IServiceCollection services)
{
services
.AddOptionsWithValidateOnStart<ProcessManagerTopicOptions>()
.BindConfiguration(ProcessManagerTopicOptions.SectionName)
.ValidateDataAnnotations();

return services;
}
}
Original file line number Diff line number Diff line change
@@ -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;

/// <summary>
/// Contains options required for the orchestrations app to connect to the
/// ProcessManager Service Bus topic.
/// </summary>
public class ProcessManagerTopicOptions
{
/// <summary>
/// Name of the section in the <see cref="IConfiguration"/> / appsettings.json file
/// </summary>
public const string SectionName = "ProcessManagerTopic";

/// <summary>
/// Name of the ProcessManager Service Bus topic
/// </summary>
[Required]
public string TopicName { get; } = string.Empty;

/// <summary>
/// Name of the subscription for BRS026 to the ProcessManager Service Bus topic
/// </summary>
[Required]
public string Brs026SubscriptionName { get; } = string.Empty;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -33,7 +34,11 @@ public class RequestCalculatedEnergyTimeSeriesTriggerV1(
/// </summary>
[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
{
Expand Down
2 changes: 2 additions & 0 deletions source/ProcessManager.Orchestrations/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -36,6 +37,7 @@
services.AddNodaTimeForApplication();

// ProcessManager
services.AddProcessManagerTopic();
// => Orchestration Descriptions
services.AddProcessManagerForOrchestrations(() =>
{
Expand Down

0 comments on commit 976bdec

Please sign in to comment.