-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathProgram.cs
53 lines (39 loc) · 1.68 KB
/
Program.cs
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
41
42
43
44
45
46
47
48
49
50
51
52
53
using System.Text.Json;
using ClientUI;
using Messages;
using Shared;
var endpointConfiguration = new EndpointConfiguration("ClientUI");
var serializer = endpointConfiguration.UseSerialization<SystemJsonSerializer>();
serializer.Options(new JsonSerializerOptions
{
TypeInfoResolverChain =
{
MessagesSerializationContext.Default
}
});
var transport = endpointConfiguration.UseTransport<LearningTransport>();
endpointConfiguration.AuditProcessedMessagesTo("audit");
endpointConfiguration.SendHeartbeatTo("Particular.ServiceControl");
endpointConfiguration.UniquelyIdentifyRunningInstance()
.UsingCustomIdentifier(new Guid("EA3E7D1B-8171-4098-B160-1FEA975CCB2C"))
.UsingCustomDisplayName("original-instance");
var metrics = endpointConfiguration.EnableMetrics();
metrics.SendMetricDataToServiceControl(
"Particular.Monitoring",
TimeSpan.FromMilliseconds(500)
);
var routing = transport.Routing();
routing.RouteToEndpoint(typeof(PlaceOrder), "Sales");
var endpointInstance = await Endpoint.Start(endpointConfiguration);
var simulatedCustomers = new SimulatedCustomers(endpointInstance);
var cancellation = new CancellationTokenSource();
var simulatedWork = simulatedCustomers.Run(cancellation.Token);
var nonInteractive = args.Length > 1 && bool.TryParse(args[1], out var isInteractive) && !isInteractive;
var interactive = !nonInteractive;
UserInterface.RunLoop("Load (ClientUI)", new Dictionary<char, (string, Action)>
{
['c'] = ("toggle High/Low traffic mode", () => simulatedCustomers.ToggleTrafficMode()),
}, writer => simulatedCustomers.WriteState(writer), interactive);
cancellation.Cancel();
await simulatedWork;
await endpointInstance.Stop();