Пример #1
0
        static void Main(string[] args)
        {
            string connectionString    = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
            string eventHubName        = CloudConfigurationManager.GetSetting("EventHubName");
            string numCamerasString    = CloudConfigurationManager.GetSetting("NumCameras");
            string numPartitionsString = CloudConfigurationManager.GetSetting("NumPartitions");

            if (string.IsNullOrEmpty(connectionString) || string.IsNullOrEmpty(eventHubName) ||
                string.IsNullOrEmpty(numCamerasString) || string.IsNullOrEmpty(numPartitionsString))
            {
                Trace.WriteLine("One or more parameters missing in appsettings (app.config)");
                return;
            }

            // Change Culture settings to en-US to ensure formatting of CSV data is correct
            System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("en-US");

            ServiceBusConnectionStringBuilder builder = new ServiceBusConnectionStringBuilder(connectionString);

            builder.TransportType = TransportType.Amqp;
            var namespaceManager = NamespaceManager.CreateFromConnectionString(builder.ToString());

            EventHubManager.CreateEventHubIfNotExists(eventHubName, int.Parse(numPartitionsString), namespaceManager);

            var driver = new CamerasDriver(eventHubName, int.Parse(numCamerasString), int.Parse(numPartitionsString));
            var token  = tokenSource.Token;

            Task.Factory.StartNew(() => driver.Run(token));
            Task.Factory.StartNew(() => driver.WaitForEnter(tokenSource));
            driver.runCompleteEvent.WaitOne();
        }
Пример #2
0
        private Azure(RestClient restClient, string subscriptionId, string tenantId, IAuthenticated authenticated)
        {
            resourceManager          = ResourceManager.Fluent.ResourceManager.Authenticate(restClient).WithSubscription(subscriptionId);
            storageManager           = StorageManager.Authenticate(restClient, subscriptionId);
            computeManager           = ComputeManager.Authenticate(restClient, subscriptionId);
            networkManager           = NetworkManager.Authenticate(restClient, subscriptionId);
            batchManager             = BatchManager.Authenticate(restClient, subscriptionId);
            keyVaultManager          = KeyVaultManager.Authenticate(restClient, subscriptionId, tenantId);
            trafficManager           = TrafficManager.Fluent.TrafficManager.Authenticate(restClient, subscriptionId);
            dnsZoneManager           = DnsZoneManager.Authenticate(restClient, subscriptionId);
            sqlManager               = SqlManager.Authenticate(restClient, subscriptionId);
            redisManager             = RedisManager.Authenticate(restClient, subscriptionId);
            cdnManager               = CdnManager.Authenticate(restClient, subscriptionId);
            appServiceManager        = AppServiceManager.Authenticate(restClient, subscriptionId, tenantId);
            searchManager            = SearchManager.Authenticate(restClient, subscriptionId);
            serviceBusManager        = ServiceBusManager.Authenticate(restClient, subscriptionId);
            containerInstanceManager = ContainerInstanceManager.Authenticate(restClient, subscriptionId);
            registryManager          = RegistryManager.Authenticate(restClient, subscriptionId);
            containerServiceManager  = ContainerServiceManager.Authenticate(restClient, subscriptionId);
            cosmosDBManager          = CosmosDBManager.Authenticate(restClient, subscriptionId);
            authorizationManager     = AuthorizationManager.Authenticate(restClient, subscriptionId);
            msiManager               = MsiManager.Authenticate(restClient, subscriptionId);
            batchAIManager           = BatchAIManager.Authenticate(restClient, subscriptionId);
            monitorManager           = MonitorManager.Authenticate(restClient, subscriptionId);
            eventHubManager          = EventHubManager.Authenticate(restClient, subscriptionId);

            SubscriptionId     = subscriptionId;
            this.authenticated = authenticated;
        }
Пример #3
0
        public override void Run()
        {
            Trace.TraceInformation("ReceiverRole is running");

            //Get settings from configuration
            var eventHubName         = CloudConfigurationManager.GetSetting("eventHubName");
            var consumerGroupName    = CloudConfigurationManager.GetSetting("consumerGroupName");
            var numberOfPartitions   = int.Parse(CloudConfigurationManager.GetSetting("numberOfPartitions"));
            var blobConnectionString = CloudConfigurationManager.GetSetting("AzureStorageConnectionString"); // Required for checkpoint/state

            //Get AMQP connection string
            var connectionString = EventHubManager.GetServiceBusConnectionString();

            //Create event hub if it does not exist
            var namespaceManager = EventHubManager.GetNamespaceManager(connectionString);

            EventHubManager.CreateEventHubIfNotExists(eventHubName, numberOfPartitions, namespaceManager);

            //Create consumer group if it does not exist
            var group = namespaceManager.CreateConsumerGroupIfNotExists(eventHubName, consumerGroupName);

            //Start processing messages
            receiver = new Receiver(eventHubName, connectionString);

            //Get host name of worker role instance.  This is used for each environment to obtain
            //a lease, and to renew the same lease in case of a restart.
            string hostName = RoleEnvironment.CurrentRoleInstance.Id;

            receiver.RegisterEventProcessor(group, blobConnectionString, hostName);

            //Wait for shutdown to be called, else the role will recycle
            this.runCompleteEvent.WaitOne();
        }
Пример #4
0
        private static void SendMessages(MyArgs a)
        {
            var namespaceManager = EventHubManager.GetNamespaceManager();

            EventHubManager.CreateEventHubIfNotExists(a.eventHubName, a.numberOfPartitions, namespaceManager);

            Sender s = new Sender(a.eventHubName, a.numberOfDevices, a.numberOfMessages);

            Trace.TraceInformation("Sending events");
            s.SendEvents();
        }
Пример #5
0
        static void Main(string[] args)
        {
            ParseArgs(args);
            var connectionString = EventHubManager.GetServiceBusConnectionString();
            var namespaceManager = EventHubManager.GetNamespaceManager(connectionString);

            EventHubManager.CreateEventHubIfNotExists(eventHubName, numberOfPartitions, namespaceManager);

            var group = namespaceManager.CreateConsumerGroupIfNotExists(eventHubName, "TestConsumerGroup");

            Receiver r = new Receiver(eventHubName, connectionString);

            r.MessageProcessingWithPartitionDistribution(group);

            Console.WriteLine("Press enter key to stop worker.");
            Console.ReadLine();
        }
Пример #6
0
 ///GENMHASH:58450A945E80C901D43CECE47608FEED:7062C994ACCC3143EB9A1DBD466807A4
 public EventHubNamespacesImpl(EventHubManager manager) : base(manager.Inner.Namespaces, manager)
 {
 }
Пример #7
0
 ///GENMHASH:02FC52656FED15BFC1B5B9216A451178:D544D70B59C64F2C67EC02DE16CBAEF6
 internal DisasterRecoveryPairingAuthorizationRulesImpl(EventHubManager manager)
 {
     this.manager = manager;
 }
 ///GENMHASH:D4CA07DF69C5770C25C54C590A72C9A3:84E3CA373B4BC562253F7D0744B26A1E
 public DisasterRecoveryPairingAuthorizationRuleImpl(AuthorizationRuleInner inner, EventHubManager manager) : base(inner)
 {
     this.manager  = manager;
     this.ancestor = new TwoAncestor(inner.Id);
 }
Пример #9
0
        static void Main(string[] args)
        {
            // Read configuration file to get the storage connection string
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
            var configuration = builder.Build();



            /*
             * Initialize the required repositories
             */
            Console.WriteLine("Initializing repositories...");
            var sqlConnectionString = configuration["SqlConnectionString"];

            activityRepository  = new ActivityRepository(sqlConnectionString);
            userRepository      = new UserRepository(sqlConnectionString);
            telemetryRepository = new TelemetryRepository(sqlConnectionString);

            /*
             * Connect to the Service Bus Queues
             */
            var storageConnectionString = configuration["StorageConnectionString"];

            /*
             * BLOB Storage
             */
            blobStorage = new BlobManager(storageConnectionString);
            Console.WriteLine("Connecting to blob containers...");
            // For telemetry pictures
            var activityContainerName = configuration["BlobContainerName"];

            blobSend = blobStorage.GetContainerReference(activityContainerName);

            // For user account pictures
            var userpicContainerName = configuration["UserpicContainerName"];

            userpicSend = blobStorage.GetContainerReference(userpicContainerName);


            Console.WriteLine("Connecting to queues...");

            /*
             * Service Bus
             */

            /*
             * Service bus for sending messages back to the runner (used for redirects)
             */
            var busConnectionString  = configuration["ServiceBusConnectionString"];
            var busQueueToRunnerName = configuration["ServiceBusQueueToRunnerName"];

            responseClient = new ServiceBusManager(busConnectionString, busQueueToRunnerName);

            /*
             * Service bus to receive messages from the runner
             */
            var busQueueName = configuration["ServiceBusQueueName"];

            queueClient = new QueueClient(busConnectionString, busQueueName);
            var messageHandlerOptions = new MessageHandlerOptions(new Func <Microsoft.Azure.ServiceBus.ExceptionReceivedEventArgs, Task>(
                                                                      async(e) => {
                var x = e.ToString();
                throw e.Exception;
            }))
            {
                MaxConcurrentCalls = 1,
                AutoComplete       = false
            };

            queueClient.RegisterMessageHandler(ProcessBusMessage, messageHandlerOptions);


            /*
             * Event Hubs
             */
            var hubConnectionString = configuration["EventHubConnectionString"];

            /*
             * Event Hub to send messages to the other worker (name is a misnomer)
             */
            var hubToOrganizerEntityPath = configuration["EventHubToOrganizerEntityPath"];

            eventHubSendToOrganizer = new EventHubManager(hubConnectionString, hubToOrganizerEntityPath);

            /*
             * Event Hub to receive telemetry data (from the runner)
             * REQUIRES a table storage to keep data
             */

            var hubToWorkerContainerName = configuration["HubToWorkerContainerName"];
            var hubToWorkerEntityPath    = configuration["EventHubToWorkerEntityPath"]; // Name
            var eventProcessorHost       = new EventProcessorHost(
                hubToWorkerEntityPath,
                PartitionReceiver.DefaultConsumerGroupName,
                hubConnectionString,
                storageConnectionString,
                hubToWorkerContainerName);

            eventProcessorHost.RegisterEventProcessorAsync <WorkerCommandManager>().GetAwaiter().GetResult();

            // eventHubReceive.RegisterEventProcessor<WorkerCommandManager>(hubToWorkerEntityPath, connectionString,
            //    hubToWorkerContainerName).GetAwaiter().GetResult();

            while (true)
            {
                Task.Delay(1000);
            }
        }