예제 #1
0
        private static void Queue_Receive()
        {
            var config = GetConfig();

            var settings = new AzureQueueSettings(
                connectionString: config["ServiceBus_ConnectionString"],
                queueName: config["ServiceBus_QueueName"]);

            IAzureQueueReceiver <Message> receiver = new AzureQueueReceiver <Message>(settings);

            receiver.Receive(
                message =>
            {
                //throw new ApplicationException("Oops!");
                Console.WriteLine(message.Text);
                return(MessageProcessResponse.Complete);
            },
                ex => Console.WriteLine(ex.Message),
                () => Console.WriteLine("Waiting..."));
        }
        private void TestMessageBrokerReceivers()
        {
            IMessageReceiver <FileUploadedEvent> fileUploadedMessageQueueReceiver = null;
            IMessageReceiver <FileDeletedEvent>  fileDeletedMessageQueueReceiver  = null;

            if (AppSettings.MessageBroker.UsedRabbitMQ())
            {
                fileUploadedMessageQueueReceiver = new RabbitMQReceiver <FileUploadedEvent>(new RabbitMQReceiverOptions
                {
                    HostName  = AppSettings.MessageBroker.RabbitMQ.HostName,
                    UserName  = AppSettings.MessageBroker.RabbitMQ.UserName,
                    Password  = AppSettings.MessageBroker.RabbitMQ.Password,
                    QueueName = AppSettings.MessageBroker.RabbitMQ.QueueName_FileUploaded,
                });

                fileDeletedMessageQueueReceiver = new RabbitMQReceiver <FileDeletedEvent>(new RabbitMQReceiverOptions
                {
                    HostName  = AppSettings.MessageBroker.RabbitMQ.HostName,
                    UserName  = AppSettings.MessageBroker.RabbitMQ.UserName,
                    Password  = AppSettings.MessageBroker.RabbitMQ.Password,
                    QueueName = AppSettings.MessageBroker.RabbitMQ.QueueName_FileDeleted,
                });
            }

            if (AppSettings.MessageBroker.UsedKafka())
            {
                fileUploadedMessageQueueReceiver = new KafkaReceiver <FileUploadedEvent>(
                    AppSettings.MessageBroker.Kafka.BootstrapServers,
                    AppSettings.MessageBroker.Kafka.Topic_FileUploaded,
                    AppSettings.MessageBroker.Kafka.GroupId);

                fileDeletedMessageQueueReceiver = new KafkaReceiver <FileDeletedEvent>(
                    AppSettings.MessageBroker.Kafka.BootstrapServers,
                    AppSettings.MessageBroker.Kafka.Topic_FileDeleted,
                    AppSettings.MessageBroker.Kafka.GroupId);
            }

            if (AppSettings.MessageBroker.UsedAzureQueue())
            {
                fileUploadedMessageQueueReceiver = new AzureQueueReceiver <FileUploadedEvent>(
                    AppSettings.MessageBroker.AzureQueue.ConnectionString,
                    AppSettings.MessageBroker.AzureQueue.QueueName_FileUploaded);

                fileDeletedMessageQueueReceiver = new AzureQueueReceiver <FileDeletedEvent>(
                    AppSettings.MessageBroker.AzureQueue.ConnectionString,
                    AppSettings.MessageBroker.AzureQueue.QueueName_FileDeleted);
            }

            if (AppSettings.MessageBroker.UsedAzureServiceBus())
            {
                fileUploadedMessageQueueReceiver = new AzureServiceBusReceiver <FileUploadedEvent>(
                    AppSettings.MessageBroker.AzureServiceBus.ConnectionString,
                    AppSettings.MessageBroker.AzureServiceBus.QueueName_FileUploaded);

                fileDeletedMessageQueueReceiver = new AzureServiceBusReceiver <FileDeletedEvent>(
                    AppSettings.MessageBroker.AzureServiceBus.ConnectionString,
                    AppSettings.MessageBroker.AzureServiceBus.QueueName_FileDeleted);
            }

            var connection = new HubConnectionBuilder()
                             .WithUrl($"{AppSettings.NotificationServer.Endpoint}/SimulatedLongRunningTaskHub")
                             .AddMessagePackProtocol()
                             .Build();

            fileUploadedMessageQueueReceiver?.Receive(data =>
            {
                Thread.Sleep(5000); // simulate long running task

                string message = data.FileEntry.Id.ToString();

                connection.StartAsync().GetAwaiter().GetResult();

                connection.InvokeAsync("SendTaskStatus", $"{AppSettings.MessageBroker.Provider} - File Uploaded", message);

                connection.StopAsync().GetAwaiter().GetResult();
            });

            fileDeletedMessageQueueReceiver?.Receive(data =>
            {
                Thread.Sleep(5000); // simulate long running task

                string message = data.FileEntry.Id.ToString();

                connection.StartAsync().GetAwaiter().GetResult();

                connection.InvokeAsync("SendTaskStatus", $"{AppSettings.MessageBroker.Provider} - File Deleted", message);

                connection.StopAsync().GetAwaiter().GetResult();
            });
        }
예제 #3
0
        private void RunMessageBrokerReceivers()
        {
            IMessageReceiver <FileUploadedEvent> fileUploadedMessageQueueReceiver = null;
            IMessageReceiver <FileDeletedEvent>  fileDeletedMessageQueueReceiver  = null;

            if (AppSettings.MessageBroker.UsedRabbitMQ())
            {
                fileUploadedMessageQueueReceiver = new RabbitMQReceiver <FileUploadedEvent>(new RabbitMQReceiverOptions
                {
                    HostName  = AppSettings.MessageBroker.RabbitMQ.HostName,
                    UserName  = AppSettings.MessageBroker.RabbitMQ.UserName,
                    Password  = AppSettings.MessageBroker.RabbitMQ.Password,
                    QueueName = AppSettings.MessageBroker.RabbitMQ.QueueName_FileUploaded,
                    AutomaticCreateEnabled = true,
                    ExchangeName           = AppSettings.MessageBroker.RabbitMQ.ExchangeName,
                    RoutingKey             = AppSettings.MessageBroker.RabbitMQ.RoutingKey_FileUploaded,
                });

                fileDeletedMessageQueueReceiver = new RabbitMQReceiver <FileDeletedEvent>(new RabbitMQReceiverOptions
                {
                    HostName  = AppSettings.MessageBroker.RabbitMQ.HostName,
                    UserName  = AppSettings.MessageBroker.RabbitMQ.UserName,
                    Password  = AppSettings.MessageBroker.RabbitMQ.Password,
                    QueueName = AppSettings.MessageBroker.RabbitMQ.QueueName_FileDeleted,
                    AutomaticCreateEnabled = true,
                    ExchangeName           = AppSettings.MessageBroker.RabbitMQ.ExchangeName,
                    RoutingKey             = AppSettings.MessageBroker.RabbitMQ.RoutingKey_FileDeleted,
                });
            }

            if (AppSettings.MessageBroker.UsedKafka())
            {
                fileUploadedMessageQueueReceiver = new KafkaReceiver <FileUploadedEvent>(
                    AppSettings.MessageBroker.Kafka.BootstrapServers,
                    AppSettings.MessageBroker.Kafka.Topic_FileUploaded,
                    AppSettings.MessageBroker.Kafka.GroupId);

                fileDeletedMessageQueueReceiver = new KafkaReceiver <FileDeletedEvent>(
                    AppSettings.MessageBroker.Kafka.BootstrapServers,
                    AppSettings.MessageBroker.Kafka.Topic_FileDeleted,
                    AppSettings.MessageBroker.Kafka.GroupId);
            }

            if (AppSettings.MessageBroker.UsedAzureQueue())
            {
                fileUploadedMessageQueueReceiver = new AzureQueueReceiver <FileUploadedEvent>(
                    AppSettings.MessageBroker.AzureQueue.ConnectionString,
                    AppSettings.MessageBroker.AzureQueue.QueueName_FileUploaded);

                fileDeletedMessageQueueReceiver = new AzureQueueReceiver <FileDeletedEvent>(
                    AppSettings.MessageBroker.AzureQueue.ConnectionString,
                    AppSettings.MessageBroker.AzureQueue.QueueName_FileDeleted);
            }

            if (AppSettings.MessageBroker.UsedAzureServiceBus())
            {
                fileUploadedMessageQueueReceiver = new AzureServiceBusReceiver <FileUploadedEvent>(
                    AppSettings.MessageBroker.AzureServiceBus.ConnectionString,
                    AppSettings.MessageBroker.AzureServiceBus.QueueName_FileUploaded);

                fileDeletedMessageQueueReceiver = new AzureServiceBusReceiver <FileDeletedEvent>(
                    AppSettings.MessageBroker.AzureServiceBus.ConnectionString,
                    AppSettings.MessageBroker.AzureServiceBus.QueueName_FileDeleted);
            }

            var notification = new SignalRNotification();
            var endpoint     = $"{AppSettings.NotificationServer.Endpoint}/SimulatedLongRunningTaskHub";

            fileUploadedMessageQueueReceiver?.Receive(data =>
            {
                Thread.Sleep(5000); // simulate long running task

                string message = data.FileEntry.Id.ToString();

                notification.Send(endpoint, "SendTaskStatus", new { Step = $"{AppSettings.MessageBroker.Provider} - File Uploaded", Message = message });
            });

            fileDeletedMessageQueueReceiver?.Receive(data =>
            {
                Thread.Sleep(5000); // simulate long running task

                string message = data.FileEntry.Id.ToString();

                notification.Send(endpoint, "SendTaskStatus", new { Step = $"{AppSettings.MessageBroker.Provider} - File Deleted", Message = message });
            });
        }
        private static void Main(string[] args)
        {
            var connection = new HubConnectionBuilder()
                             .WithUrl("http://localhost:62710/SimulatedLongRunningTaskHub")
                             .AddMessagePackProtocol()
                             .Build();

            connection.On <string>("ReceiveTaskStatus", (message) => { Console.WriteLine(message); });
            connection.StartAsync().GetAwaiter().GetResult();

            var rabbitMQFileUploadedEventReceiver = new RabbitMQReceiver <FileUploadedEvent>(new RabbitMQReceiverOptions
            {
                HostName  = "localhost",
                UserName  = "******",
                Password  = "******",
                QueueName = "classifiedadds_fileuploaded",
            });

            rabbitMQFileUploadedEventReceiver.Receive(data =>
            {
                Console.WriteLine("RabbitMQ - File Uploaded: " + data.FileEntry.Id);
            });

            var rabbitMQFileDeletedEventReceiver = new RabbitMQReceiver <FileDeletedEvent>(new RabbitMQReceiverOptions
            {
                HostName  = "localhost",
                UserName  = "******",
                Password  = "******",
                QueueName = "classifiedadds_filedeleted",
            });

            rabbitMQFileDeletedEventReceiver.Receive(data =>
            {
                Console.WriteLine("RabbitMQ - File Deleted: " + data.FileEntry.Id);
            });

            var kafkaFileUploadedEventReceiver = new KafkaReceiver <FileUploadedEvent>("localhost:9092", "classifiedadds_fileuploaded", "classified");

            kafkaFileUploadedEventReceiver.Receive(data =>
            {
                Console.WriteLine("Kafka - File Uploaded: " + data.FileEntry.Id);
            });

            var kafkaFileDeletedEventReceiver = new KafkaReceiver <FileDeletedEvent>("localhost:9092", "classifiedadds_filedeleted", "classified");

            kafkaFileDeletedEventReceiver.Receive(data =>
            {
                Console.WriteLine("Kafka - File Deleted: " + data.FileEntry.Id);
            });

            var azureQueueFileUploadedEventReceiver = new AzureQueueReceiver <FileUploadedEvent>("DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net", "classifiedadds-fileuploaded");

            azureQueueFileUploadedEventReceiver.Receive(data =>
            {
                Console.WriteLine("AzureQueue - File Uploaded:" + data.FileEntry.Id);
            });

            var azureQueueFileDeletedEventReceiver = new AzureQueueReceiver <FileDeletedEvent>("DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net", "classifiedadds-filedeleted");

            azureQueueFileDeletedEventReceiver.Receive(data =>
            {
                Console.WriteLine("AzureQueue - File Deleted:" + data.FileEntry.Id);
            });

            var azureServiceBusFileUploadedEventReceiver = new AzureServiceBusReceiver <FileUploadedEvent>("Endpoint=sb://xxx.servicebus.windows.net/;SharedAccessKeyName=xxx;SharedAccessKey=xxx", "classifiedadds_fileuploaded");

            azureServiceBusFileUploadedEventReceiver.Receive(data =>
            {
                Console.WriteLine("AzureServiceBus - File Uploaded:" + data.FileEntry.Id);
            });

            var azureServiceBusFileDeletedEventReceiver = new AzureServiceBusReceiver <FileDeletedEvent>("Endpoint=sb://xxx.servicebus.windows.net/;SharedAccessKeyName=xxx;SharedAccessKey=xxx", "classifiedadds_filedeleted");

            azureServiceBusFileDeletedEventReceiver.Receive(data =>
            {
                Console.WriteLine("AzureServiceBus - File Deleted:" + data.FileEntry.Id);
            });

            Console.WriteLine("Listening...");
            Console.ReadLine();

            rabbitMQFileUploadedEventReceiver.Dispose();
            rabbitMQFileDeletedEventReceiver.Dispose();
        }