예제 #1
0
        public async Task SendMessageAsync(SubscriptionDto subscriptionDto)
        {
            var httpClient = _httpClientFactory.CreateClient();

            var request = new HttpRequestMessage(HttpMethod.Post, subscriptionDto.URI);

            request.Headers.Accept.Clear();
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            request.Content = new StringContent(JsonSerializer.Serialize(subscriptionDto));

            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            try
            {
                using (var response = await httpClient.SendAsync(request))
                {
                    Console.WriteLine("Successful...");
                    response.EnsureSuccessStatusCode();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Unsuccessful {ex.Message}");
            }
        }
예제 #2
0
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            Console.WriteLine("Starting up....");

            _consumer.Subscribe(Program.TopicName);

            while (!cancellationToken.IsCancellationRequested)
            {
                var consumeResult = _consumer.Consume(cancellationToken);

                var message = consumeResult.Message.Value;

                Console.WriteLine($"Received Message : {message}");

                // Get Subscription List from DB
                using (var currentSession = CreateSessionFactory().OpenSession())
                {
                    Console.WriteLine("Getting Subscriptions");
                    try
                    {
                        _subscriptions = currentSession.Query <Subscription>().ToList();
                        if (_subscriptions == null)
                        {
                            Console.WriteLine("Error! No subscriptions found....");
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                        Debug.WriteLine(ex);
                    }
                }

                foreach (var subscription in _subscriptions)
                {
                    Console.WriteLine("Sending Message");
                    var subscriptionDto = new SubscriptionDto
                    {
                        URI       = subscription.URI,
                        TopicName = subscription.TopicName,
                        Message   = message
                    };

                    await _sendNotification.SendMessageAsync(subscriptionDto);
                }
            }

            _consumer.Close();
        }