Fix lifetime scope issue with service bus queue starter
This commit is contained in:
parent
bc443fe317
commit
5e8a602f61
|
|
@ -1,7 +1,7 @@
|
|||
using System;
|
||||
using Elsa.Activities.AzureServiceBus.HostedServices;
|
||||
using Elsa.Activities.AzureServiceBus.Options;
|
||||
using Elsa.Activities.AzureServiceBus.Services;
|
||||
using Elsa.Activities.AzureServiceBus.StartupTasks;
|
||||
using Elsa.Activities.AzureServiceBus.Triggers;
|
||||
using Microsoft.Azure.ServiceBus;
|
||||
using Microsoft.Azure.ServiceBus.Management;
|
||||
|
|
|
|||
|
|
@ -9,18 +9,16 @@ using Elsa.Services;
|
|||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace Elsa.Activities.AzureServiceBus.StartupTasks
|
||||
namespace Elsa.Activities.AzureServiceBus.HostedServices
|
||||
{
|
||||
public class StartServiceBusQueues : BackgroundService
|
||||
{
|
||||
private readonly IWorkflowRegistry _workflowRegistry;
|
||||
private readonly IWorkflowBlueprintReflector _workflowBlueprintReflector;
|
||||
private readonly IMessageReceiverFactory _messageReceiverFactory;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public StartServiceBusQueues(IWorkflowRegistry workflowRegistry, IWorkflowBlueprintReflector workflowBlueprintReflector, IMessageReceiverFactory messageReceiverFactory, IServiceProvider serviceProvider)
|
||||
public StartServiceBusQueues(IWorkflowBlueprintReflector workflowBlueprintReflector, IMessageReceiverFactory messageReceiverFactory, IServiceProvider serviceProvider)
|
||||
{
|
||||
_workflowRegistry = workflowRegistry;
|
||||
_workflowBlueprintReflector = workflowBlueprintReflector;
|
||||
_messageReceiverFactory = messageReceiverFactory;
|
||||
_serviceProvider = serviceProvider;
|
||||
|
|
@ -40,7 +38,9 @@ namespace Elsa.Activities.AzureServiceBus.StartupTasks
|
|||
|
||||
private async IAsyncEnumerable<string> GetQueueNamesAsync([EnumeratorCancellation] CancellationToken cancellationToken)
|
||||
{
|
||||
var workflows = await _workflowRegistry.GetWorkflowsAsync(cancellationToken).ToListAsync(cancellationToken);
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
var workflowRegistry = scope.ServiceProvider.GetRequiredService<IWorkflowRegistry>();
|
||||
var workflows = await workflowRegistry.GetWorkflowsAsync(cancellationToken).ToListAsync(cancellationToken);
|
||||
|
||||
var query =
|
||||
from workflow in workflows
|
||||
|
|
@ -10,10 +10,12 @@ namespace Elsa.Samples.AzureServiceBusWorker.Workflows
|
|||
{
|
||||
public class ProducerWorkflow : IWorkflow
|
||||
{
|
||||
private readonly IClock _clock;
|
||||
private readonly Random _random;
|
||||
|
||||
public ProducerWorkflow()
|
||||
public ProducerWorkflow(IClock clock)
|
||||
{
|
||||
_clock = clock;
|
||||
_random = new Random();
|
||||
}
|
||||
|
||||
|
|
@ -27,8 +29,9 @@ namespace Elsa.Samples.AzureServiceBusWorker.Workflows
|
|||
|
||||
private Greeting GetRandomGreeting()
|
||||
{
|
||||
var today = _clock.GetCurrentInstant().InUtc().Date.DayOfWeek;
|
||||
var names = new[] { "John", "Jill", "Julia", "Miriam", "Jack", "Bob" };
|
||||
var messages = new[] { "Hello!", "How do you do?", "Happy Monday!" };
|
||||
var messages = new[] { "Hello!", "How do you do?", $"Happy {today}!" };
|
||||
var from = _random.Next(0, names.Length);
|
||||
var to = _random.Next(0, names.Length);
|
||||
var message = _random.Next(0, messages.Length);
|
||||
|
|
|
|||
Loading…
Reference in a new issue