예제 #1
0
        static IOrchestrationServiceClient CreateOrchestrationServiceClient(
            ServiceBusOrchestrationServiceSettings settings)
        {
            var service = new ServiceBusOrchestrationService(
                ServiceBusConnectionString,
                TaskHubName,
                new AzureTableInstanceStore(TaskHubName, StorageConnectionString),
                new AzureStorageBlobStore(TaskHubName, StorageConnectionString),
                settings);

            return(service);
        }
예제 #2
0
        static IOrchestrationService CreateOrchestrationServiceWorker(
            ServiceBusOrchestrationServiceSettings settings,
            TimeSpan jumpStartAttemptInterval)
        {
            var service = new ServiceBusOrchestrationService(
                ServiceBusConnectionString,
                TaskHubName,
                new AzureTableInstanceStore(TaskHubName, StorageConnectionString),
                new AzureStorageBlobStore(TaskHubName, StorageConnectionString),
                settings);

            return(service);
        }
예제 #3
0
        public static ServiceBusOrchestrationServiceSettings CreateTestClientSettings()
        {
            var settings = new ServiceBusOrchestrationServiceSettings
            {
                MessageCompressionSettings = new CompressionSettings
                {
                    Style            = CompressionStyle.Threshold,
                    ThresholdInBytes = 1024
                }
            };

            return(settings);
        }
예제 #4
0
        public static ServiceBusOrchestrationServiceSettings CreateTestWorkerSettings(CompressionStyle style = CompressionStyle.Threshold)
        {
            var settings = new ServiceBusOrchestrationServiceSettings
            {
                TaskOrchestrationDispatcherSettings = { CompressOrchestrationState = true },
                MessageCompressionSettings          = new CompressionSettings {
                    Style = style, ThresholdInBytes = 1024
                },
                JumpStartSettings = { JumpStartEnabled = true, IgnoreWindow = TimeSpan.FromSeconds(10) }
            };

            return(settings);
        }
예제 #5
0
        private static async Task startAsync()
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse("UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://127.0.0.1;");

            IOrchestrationServiceInstanceStore store = new AzureTableInstanceStore("TestTaskHub9", "UseDevelopmentStorage=true;DevelopmentStorageProxyUri= http://127.0.0.1;");
            var           settings  = new ServiceBusOrchestrationServiceSettings();
            var           service   = new ServiceBusOrchestrationService("<ServiceBUsConnectionString>", "TestTaskHub9", store, null, settings);
            TaskHubWorker hubWorker = new TaskHubWorker(service);

            hubWorker.AddTaskOrchestrations(typeof(TestOrchestration));
            hubWorker.AddTaskActivities(typeof(TestActivity1));
            hubWorker.AddTaskActivities(typeof(TestActivity2));
            await service.CreateIfNotExistsAsync();

            await hubWorker.StartAsync();
        }
예제 #6
0
        static void Main(string[] args)
        {
            IOrchestrationServiceInstanceStore store = new AzureTableInstanceStore("TestTaskHub9", "UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://127.0.0.1;");
            var settings = new ServiceBusOrchestrationServiceSettings();
            var service  = new ServiceBusOrchestrationService("<ServiceBUsConnectionString>", "TestTaskHub9", store, null, settings);
            var client   = new TaskHubClient(service);

            try
            {
                var instance = client.CreateOrchestrationInstanceAsync(typeof(TestOrchestration), "InstanceId5302", "Test Input").Result;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            while (true)
            {
                Thread.Sleep(1000);
            }
        }
예제 #7
0
        public async Task TestMaxDeliveryCountIfNew()
        {
            var settings = new ServiceBusOrchestrationServiceSettings
            {
                MaxTaskActivityDeliveryCount      = 100,
                MaxTaskOrchestrationDeliveryCount = 100,
                MaxTrackingDeliveryCount          = 100
            };

            taskHub = TestHelpers.CreateTaskHub(settings);
            var service = taskHub.orchestrationService as ServiceBusOrchestrationService;

            Assert.IsNotNull(service);
            await service.CreateIfNotExistsAsync();

            Dictionary <string, int> retQueues = await service.GetHubQueueMaxDeliveryCountsAsync();

            Assert.AreEqual(settings.MaxTaskActivityDeliveryCount, retQueues["TaskOrchestration"]);
            Assert.AreEqual(settings.MaxTaskOrchestrationDeliveryCount, retQueues["TaskActivity"]);
            Assert.AreEqual(settings.MaxTrackingDeliveryCount, retQueues["Tracking"]);

            await service.DeleteAsync();
        }
예제 #8
0
 public static TaskHubWorker CreateTaskHub(ServiceBusOrchestrationServiceSettings settings)
 {
     return(new TaskHubWorker(CreateOrchestrationServiceWorker(settings, TimeSpan.FromMinutes(10))));
 }
예제 #9
0
        static void Main(string[] args)
        {
            eventListener = new ObservableEventListener();
            eventListener.LogToFlatFile("Trace.log");
            eventListener.EnableEvents(DefaultEventSource.Log, EventLevel.Warning);

            string tableConnectionString = ConfigurationManager.AppSettings["StorageConnectionString"];

            if (CommandLine.Parser.Default.ParseArgumentsStrict(args, options))
            {
                string connectionString = ConfigurationManager.ConnectionStrings["Microsoft.ServiceBus.ConnectionString"].ConnectionString;
                string taskHubName      = ConfigurationManager.AppSettings["TaskHubName"];


                IOrchestrationServiceInstanceStore instanceStore = new AzureTableInstanceStore(taskHubName, tableConnectionString);

                ServiceBusOrchestrationServiceSettings settings = new ServiceBusOrchestrationServiceSettings
                {
                    TaskOrchestrationDispatcherSettings =
                    {
                        CompressOrchestrationState  = bool.Parse(ConfigurationManager.AppSettings["CompressOrchestrationState"]),
                        MaxConcurrentOrchestrations = int.Parse(ConfigurationManager.AppSettings["MaxConcurrentOrchestrations"])
                    },
                    TaskActivityDispatcherSettings =
                    {
                        MaxConcurrentActivities = int.Parse(ConfigurationManager.AppSettings["MaxConcurrentActivities"])
                    }
                };

                ServiceBusOrchestrationService orchestrationServiceAndClient =
                    new ServiceBusOrchestrationService(connectionString, taskHubName, instanceStore, null, settings);


                TaskHubClient taskHubClient = new TaskHubClient(orchestrationServiceAndClient);
                TaskHubWorker taskHub       = new TaskHubWorker(orchestrationServiceAndClient);

                if (options.CreateHub)
                {
                    orchestrationServiceAndClient.CreateIfNotExistsAsync().Wait();
                }

                OrchestrationInstance instance = null;
                string instanceId = options.StartInstance;

                if (!string.IsNullOrWhiteSpace(instanceId))
                {
                    var driverConfig = new DriverOrchestrationData
                    {
                        NumberOfIteration     = int.Parse(ConfigurationManager.AppSettings["DriverOrchestrationIterations"]),
                        NumberOfParallelTasks = int.Parse(ConfigurationManager.AppSettings["DriverOrchestrationParallelTasks"]),
                        SubOrchestrationData  = new TestOrchestrationData
                        {
                            NumberOfParallelTasks = int.Parse(ConfigurationManager.AppSettings["ChildOrchestrationParallelTasks"]),
                            NumberOfSerialTasks   = int.Parse(ConfigurationManager.AppSettings["ChildOrchestrationSerialTasks"]),
                            MaxDelayInMinutes     = int.Parse(ConfigurationManager.AppSettings["TestTaskMaxDelayInMinutes"]),
                        }
                    };

                    instance = taskHubClient.CreateOrchestrationInstanceAsync(typeof(DriverOrchestration), instanceId, driverConfig).Result;
                }
                else
                {
                    instance = new OrchestrationInstance {
                        InstanceId = options.InstanceId
                    };
                }

                Console.WriteLine($"Orchestration starting: {DateTime.Now}");
                Stopwatch stopWatch = Stopwatch.StartNew();

                TestTask testTask = new TestTask();
                taskHub.AddTaskActivities(testTask);
                taskHub.AddTaskOrchestrations(typeof(DriverOrchestration));
                taskHub.AddTaskOrchestrations(typeof(TestOrchestration));
                taskHub.StartAsync().Wait();

                int testTimeoutInSeconds = int.Parse(ConfigurationManager.AppSettings["TestTimeoutInSeconds"]);
                OrchestrationState state = WaitForInstance(taskHubClient, instance, testTimeoutInSeconds);
                stopWatch.Stop();
                Console.WriteLine($"Orchestration Status: {state.OrchestrationStatus}");
                Console.WriteLine($"Orchestration Result: {state.Output}");
                Console.WriteLine($"Counter: {testTask.counter}");

                TimeSpan totalTime   = stopWatch.Elapsed;
                string   elapsedTime = $"{totalTime.Hours:00}:{totalTime.Minutes:00}:{totalTime.Seconds:00}.{totalTime.Milliseconds/10:00}";
                Console.WriteLine($"Total Time: {elapsedTime}");
                Console.ReadLine();

                taskHub.StopAsync().Wait();
            }
        }
예제 #10
0
        // ReSharper disable once UnusedMember.Local
        static void Main(string[] args)
        {
            using (DiagnosticPipelineFactory.CreatePipeline("eventFlowConfig.json"))
            {
                var    config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                string tableConnectionString        = config.AppSettings.Settings["StorageConnectionString"].Value;
                ParserResult <Options> parserResult = Parser.Default.ParseArguments <Options>(args);
                parserResult.WithParsed(
                    options =>
                {
                    string connectionString = config.ConnectionStrings.ConnectionStrings["Microsoft.ServiceBus.ConnectionString"].ConnectionString;
                    string taskHubName      = config.AppSettings.Settings["TaskHubName"].Value;


                    IOrchestrationServiceInstanceStore instanceStore = new AzureTableInstanceStore(taskHubName, tableConnectionString);

                    var settings = new ServiceBusOrchestrationServiceSettings
                    {
                        TaskOrchestrationDispatcherSettings =
                        {
                            CompressOrchestrationState  = bool.Parse(config.AppSettings.Settings["CompressOrchestrationState"].Value),
                            MaxConcurrentOrchestrations = int.Parse(config.AppSettings.Settings["MaxConcurrentOrchestrations"].Value)
                        },
                        TaskActivityDispatcherSettings =
                        {
                            MaxConcurrentActivities = int.Parse(config.AppSettings.Settings["MaxConcurrentActivities"].Value)
                        }
                    };

                    var orchestrationServiceAndClient =
                        new ServiceBusOrchestrationService(connectionString, taskHubName, instanceStore, null, settings);


                    var taskHubClient = new TaskHubClient(orchestrationServiceAndClient);
                    var taskHub       = new TaskHubWorker(orchestrationServiceAndClient);

                    if (options.CreateHub)
                    {
                        orchestrationServiceAndClient.CreateIfNotExistsAsync().Wait();
                    }

                    OrchestrationInstance instance;
                    string instanceId = options.StartInstance;

                    if (!string.IsNullOrWhiteSpace(instanceId))
                    {
                        var driverConfig = new DriverOrchestrationData
                        {
                            NumberOfIteration     = int.Parse(config.AppSettings.Settings["DriverOrchestrationIterations"].Value),
                            NumberOfParallelTasks = int.Parse(config.AppSettings.Settings["DriverOrchestrationParallelTasks"].Value),
                            SubOrchestrationData  = new TestOrchestrationData
                            {
                                NumberOfParallelTasks = int.Parse(config.AppSettings.Settings["ChildOrchestrationParallelTasks"].Value),
                                NumberOfSerialTasks   = int.Parse(config.AppSettings.Settings["ChildOrchestrationSerialTasks"].Value),
                                MaxDelayInMinutes     = int.Parse(config.AppSettings.Settings["TestTaskMaxDelayInMinutes"].Value),
                            }
                        };

                        instance = taskHubClient.CreateOrchestrationInstanceAsync(typeof(DriverOrchestration), instanceId, driverConfig).Result;
                    }
                    else
                    {
                        instance = new OrchestrationInstance {
                            InstanceId = options.InstanceId
                        };
                    }

                    Console.WriteLine($"Orchestration starting: {DateTime.Now}");
                    Stopwatch stopWatch = Stopwatch.StartNew();

                    var testTask = new TestTask();
                    taskHub.AddTaskActivities(testTask);
                    taskHub.AddTaskOrchestrations(typeof(DriverOrchestration));
                    taskHub.AddTaskOrchestrations(typeof(TestOrchestration));
                    taskHub.StartAsync().Wait();

                    int testTimeoutInSeconds = int.Parse(config.AppSettings.Settings["TestTimeoutInSeconds"].Value);
                    OrchestrationState state = WaitForInstance(taskHubClient, instance, testTimeoutInSeconds);
                    stopWatch.Stop();
                    Console.WriteLine($"Orchestration Status: {state.OrchestrationStatus}");
                    Console.WriteLine($"Orchestration Result: {state.Output}");
                    Console.WriteLine($"Counter: {testTask.Counter}");

                    TimeSpan totalTime = stopWatch.Elapsed;
                    string elapsedTime = $"{totalTime.Hours:00}:{totalTime.Minutes:00}:{totalTime.Seconds:00}.{totalTime.Milliseconds / 10:00}";
                    Console.WriteLine($"Total Time: {elapsedTime}");
                    Console.ReadLine();

                    taskHub.StopAsync().Wait();
                })
                .WithNotParsed(errors => Console.Error.WriteLine(Options.GetUsage(parserResult)));
            }
        }