Starts in:
2 DAYS
11 HRS
12 MIN
30 SEC
Starts in:
2 D
11 H
12 M
30 S
Open Closed

Lifetime on Callback #2788


User avatar
0
andmattia created
  • ABP Framework version: lastest
  • DB provider: MongoDB

Hi

we are working on a module/service that are connecto to MQTT server.

We have create a client and define it as ISingletonDependency because only one exists on our application, we set the configuration via IOptions and until here this it works fine.

At the end of domain module we add a simple to init all configuration

public override async Task OnPreApplicationInitializationAsync(ApplicationInitializationContext context)
    {
        var myService = context.ServiceProvider.GetService<BrokerClient>();
        await myService.InitializeAsync();
    }

the first execution on Receive message handler is ok and it write data on DB but the second message has all services disposed IService

    // On Init Async method
    _mqttClient.UseApplicationMessageReceivedHandler(ReceiveMessageHandler);
    


    [UnitOfWork]
    private async Task ReceiveMessageHandler(MqttApplicationMessageReceivedEventArgs arg)
    {
       ...
       //using (var scope = _serviceProvider.CreateScope())
       //{
            _logger.LogDebug(jsonString);
       //}
    }

If I run this code log works has expected but If I look into this and _serviceProvider is disposed

How can we recover the consistent state of UOW?


1 Answer(s)
  • User Avatar
    0
    andmattia created

    I found the problem.

    My base class inherit from DomainService and it's ITransientDependency

Made with ❤️ on ABP v9.1.0-preview. Updated on November 20, 2024, 13:06