Exemplo n.º 1
0
        public IEnumerable <News> Get()
        {
            RpcClient rpcClient = new RpcClient();

            Console.WriteLine(" [x] Requesting news");

            RpcDataNewsRequest requestObject = new RpcDataNewsRequest
            {
                Server     = -1,
                Category   = "",
                StartIndex = 0,
                Count      = 10
            };
            string request  = JsonSerializer.ToJsonString(requestObject);
            string response = rpcClient.Call(request, "rpc.getnews");

            RpcDataNewsResponse rpcDataNews;

            try
            {
                rpcDataNews = JsonSerializer.Deserialize <RpcDataNewsResponse>(response);
            }
            catch (Exception e)
            {
                Console.WriteLine($" [.] failed to parse json: {e.Message}");
                return(null);
            }

            Console.WriteLine($" [.] Got '{rpcDataNews.News}'");

            rpcClient.Close();
            return(rpcDataNews.News);
        }
Exemplo n.º 2
0
        private void ConsumerReceived(object model, BasicDeliverEventArgs ea)
        {
            var props      = ea.BasicProperties;
            var replyProps = Channel.CreateBasicProperties();

            replyProps.CorrelationId = props.CorrelationId;

            string message = Encoding.UTF8.GetString(ea.Body.ToArray());

            _logger.LogInformation($" [x] request: '{message}'");

            RpcDataNewsRequest request = JsonSerializer.Deserialize <RpcDataNewsRequest>(message);

            RpcDataNewsResponse response = new RpcDataNewsResponse()
            {
                News = _newsDbHelper.Get(request)
            };

            string jsonObject = JsonSerializer.ToJsonString(response);

            _logger.LogInformation($" [x] response: '{response.News.Length}'");

            byte[] body = Encoding.UTF8.GetBytes(jsonObject);

            Channel.BasicPublish(exchange: "", routingKey: props.ReplyTo, basicProperties: replyProps, body: body);
            Channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
        }