public
Created

Sample of running AppEngine inside the Web Role (for Lokad.CQRS v2.0)

  • Download Gist
WebRole.cs
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
// Sample of running AppEngine inside the Web Role, essentially merging
// 1 worker role and 1 web role (for Lokad.CQRS v2.0)
// For explanation see: http://abdullin.com/journal/2011/7/6/lokadcqrs-can-make-windows-azure-cheaper-for-you.html
public class WebRole : RoleEntryPoint
{
CqrsEngineHost _host;
readonly CancellationTokenSource _source = new CancellationTokenSource();
 
public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 48;
RoleEnvironment.Changing += RoleEnvironmentChanging;
 
_host = BuildBusForWorker.Configure().Build();
 
return base.OnStart();
}
 
public override void Run()
{
var task = _host.Start(_source.Token);
task.Wait()
}
 
public override void OnStop()
{
_source.Cancel();
base.OnStop();
}
 
private static void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
// If a configuration setting is changing
if (e.Changes.Any(change => change is RoleEnvironmentConfigurationSettingChange))
{
// Set e.Cancel to true to restart this role instance
e.Cancel = true;
}
}
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.