Base solution for your next web application

Activities of "[email protected]"

Hi Brian,

After implementing a solution using your approach, everything works as expected in a fully scaled Azure setup.

Once again, thanks Brian for your input and kindly offered solution.

Hi @ismcagdas,

The way the Online Manager is setup for Signalr should be revised, as cloud solutions that need to scale out will face this issue. Using a service like Azure Signalr should work our of the box and should not require any additional type of backplane to work in a scaled environment.

Hi @ismcagdas,

Before implementing Brians solution above, I turned on Redis as you suggestion as a quick fix, however, this still didn't fix the problem! When the Azure App Service is scaled out to 2+ instances message delivery is still inconsistence!

Cheers Jason

Hi Brian,

Thank you for the details shared, much apreciated and very helpfully. I will implement something simlar, adapting it to the latest version of ABP/ANZ.

Cheers Jason

Hi @ismcagdas,

I have been looking through the ABP Realtime repo today, which seems to be the issue. I am confused why I need to use Redis, when the Azure Signalr Service shouldn't need to have a Redis backplane. Also, Redis can have latency issues, especially when you have a multi region Azure setup. Futhermore, the cost is much higher espeically when you need to scale.

The design of the OnlineClientManager with the InMemory store is not designed for horizontal scalablily, which is an issue.

Do you have another solution other then Redis? This should work out of the box.

Thanks Jason

Hi @sedulen,

Thank you for providing the details above. I have not had to replace any ANZ core classes during module initialization until now! So any code you could provide for the Azure Storage Account (Tables) implementation you have mentioned, would be very helpful.

The details provided definitely explain the behaviour I have been experiencing.

Hi @ismcagdas, to answer your question, yes. Furthermore, when I setup a test app, excluding the ABP/ANZ frameworks everything works as expected.

Thanks Jason

Setup Details:

  • What is your product version? v11.1.0
  • What is your product type (Angular or MVC)? ASP.NET CORE MVC & jQuery
  • What is product framework type (.net framework or .net core)? .NET Core
  • What is ABP Framework version? 7.1.0

I am looking at scaling out my App Service to a minimum of 2 instances (with a single Azure Signalr Service instance), however, when I do this, all clients stop receiving messages consistently. As soon as I scale down the App Service back to 1 instance everything works fine again.

Please see the diagram below, I want to make sure we understanding the issue here:

I had Microsoft check the Azure Signalr Service and complete a live trace, while I had the app service is scaled out to 2 instances, they have come back stating no errors are logged in the Signalr service and that all connections were good. Therefore, they assume the issue occurs in code on the app service end, as no response is sent from the server. So the SingalR service is working fine.

I also do not see any errors in App Insights when messages are being lost.

Are there any issues with using ANZ and ABP with the Azure Signalr Service, when the app service is scaled out?

Showing 1 to 6 of 6 entries