예제 #1
0
        private static void TestPushDataToKafka()
        {
            var topic     = "dudu_test";
            var text      = "Heello";
            var kafkaHost = ConfigurationManagerExtensions.GetValueByKey("Kafka:Host") ?? "127.0.0.1:9092";

            var config = new Dictionary <string, object>
            {
                { "bootstrap.servers", kafkaHost },
                { "acks", "all" },
                { "retries", 3 },
            };

            Console.WriteLine("Push to Kafka");
            var sw = Stopwatch.StartNew();

            using (var producer = new Producer <string, string>(config, new StringSerializer(Encoding.UTF8), new StringSerializer(Encoding.UTF8)))
            {
                var result = producer.ProduceAsync(topic, null, text).GetAwaiter().GetResult();

                producer.Flush(1);
            }
            sw.Stop();
            Console.WriteLine($"Pushed MSG: '{text}' to TOPIC: {topic} into Kafka in miliseconds: {sw.ElapsedMilliseconds}");
            Console.WriteLine("Press 'Enter' key for close");
        }
예제 #2
0
        public void When_one_trigger_callback_is_registered_Then_the_callback_is_notified_the_request_succeeds()
        {
            ConfigurationManagerExtensions.AddFakeAppServiceRuntimeSettings();

            var packageUri = Any.Uri();

            var callbackPath = Any.UriPath();

            using (var mockService = new MockService()
                                     .OnRequest(r => r.Path.ToString() == "/" + callbackPath)
                                     .RespondWith(r => r.StatusCode = 200))
            {
                var callbackUri = mockService.GetBaseAddress() + callbackPath;

                using (var server = Microsoft.Owin.Testing.TestServer.Create <Startup>())
                {
                    server.HttpClient.PutAsync(String.Format("/api/Trigger?triggerId={0}", Any.Guid()),
                                               Any.Azure.AppServiceTrigger.MyGetConnectorTriggerBody(callbackUri).ToJsonStringContent())
                    .Wait();

                    server
                    .HttpClient
                    .AsMyGetTriggerSource()
                    .PostAsync("/api/MyGetWebhook/",
                               Any.MyGet.WebHooks.PackageAddedPayload(packageUri).ToJsonStringContent("application/vnd.myget.webhooks.v1+json"))
                    .Result
                    .ShouldSucceed();
                }
            }
        }
예제 #3
0
        public async Task <object> ClientSendData(string topic, string msg)
        {
            var kafkaHost = ConfigurationManagerExtensions.GetValueByKey("Kafka:Host") ?? "127.0.0.1:9092";

            var config = new Dictionary <string, object>
            {
                { "bootstrap.servers", kafkaHost },
                { "acks", "all" },
                { "retries", 3 }
            };

            Console.WriteLine("Push to Kafka");
            var sw = Stopwatch.StartNew();

            using (var producer = new Producer <Null, string>(config, null, new StringSerializer(Encoding.UTF8)))
            {
                var result = await producer.ProduceAsync(topic, null, msg);

                producer.Flush(1000);
            }
            sw.Stop();
            Console.WriteLine($"Pushed into Kafka MSG: '{msg}' to TOPIC: {topic} in miliseconds: {sw.ElapsedMilliseconds}");

            return(new
            {
                Success = true,
                Topic = topic
            });
        }
예제 #4
0
        private static void Run()
        {
            var redishost = ConfigurationManagerExtensions.GetConnectionString("RedisConnectionString");

            RedisServices.Init(redishost, null, string.Empty);

            CommandsAndEventsRegisterEngine.AutoRegister();

            EngineeCommandWorkerQueue.Start();
            EngineeEventWorkerQueue.Start();
            var cmd = (Console.ReadLine() ?? string.Empty).ToLower().Trim();

            while (!cmd.Equals("quit"))
            {
                switch (cmd)
                {
                case "quit":
                    _stop = true;
                    break;

                case "stop":
                    _stop = true;
                    break;

                case "start":
                    _stop = false;
                    MessiveSendCmd(null);
                    break;

                case "pubsub":
                    CommandEventSender.Send(new SampleEventCreated()
                    {
                        PublishedEventId = Guid.NewGuid(),
                        SampleVersion    = DateTime.Now.ToString(),
                        Version          = 0
                    });
                    break;

                case "pubsubmad":
                    _stop = false;
                    MessiveSendCmd(() => {
                        CommandEventSender.Send(new SampleEventCreated()
                        {
                            PublishedEventId = Guid.NewGuid(),
                            SampleVersion    = DateTime.Now.ToString(),
                            Version          = 0
                        });
                    });
                    break;
                }
                cmd = (Console.ReadLine() ?? string.Empty).ToLower().Trim();
            }

            Console.Read();
        }
예제 #5
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();
            services.AddMvc(option => {
                // option.Filters.Add(new IotHubAuthorizeAttribute());
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            //RedisServices.Init("172.16.10.166", null, string.Empty);
            var redishost = ConfigurationManagerExtensions.GetConnectionString("RedisConnectionString");

            RedisServices.Init(redishost, null, string.Empty);
            CommandsAndEventsRegisterEngine.AutoRegister();

            EngineeCommandWorkerQueue.Start();
            EngineeEventWorkerQueue.Start();

            services.AddSwagger();
        }
        private async Task InitClient()
        {
            if (_mqttClient == null)
            {
                _mqttClient = _mqttfactory.CreateMqttClient();

                var mqttHost = ConfigurationManagerExtensions.GetValueByKey("Mqtt:Host") ?? "127.0.0.1";


                var option = new MQTTnet.Client.MqttClientOptions
                {
                    ChannelOptions = new MQTTnet.Client.MqttClientTcpOptions
                    {
                        Server = mqttHost
                    },
                    ClientId = "dudu_" + Guid.NewGuid().ToString(),
                    //KeepAlivePeriod = new TimeSpan(0, 0, 1)
                };

                _mqttClient.ApplicationMessageReceived += (sender, e) =>
                {
                    Console.WriteLine("Client Received: Do anything you want");
                    Console.WriteLine("Sender");
                    Console.WriteLine(JsonConvert.SerializeObject(sender));
                    Console.WriteLine("MqttApplicationMessageReceivedEventArgs");
                    Console.WriteLine(JsonConvert.SerializeObject(e));
                };

                _mqttClient.Disconnected += (sender, e) =>
                {
                    //try reconnect
                    _mqttClient.ConnectAsync(option);
                };

                await _mqttClient.ConnectAsync(option);

                await _mqttClient.SubscribeAsync(new List <TopicFilter>() {
                    new TopicFilterBuilder()
                    .WithTopic(_mqttClient.Options.ClientId)
                    .WithAtLeastOnceQoS()
                    .Build()
                });
            }
        }
예제 #7
0
        /// <summary>
        /// Build setting from appsettings.json
        /// </summary>
        /// <param name="appSettingsFileName"></param>
        public static void Init(string appSettingsFileName = "appsettings.json")
        {
            IConfiguration config = new ConfigurationBuilder()
                                    .AddJsonFile(appSettingsFileName, true, true).Build();

            ConfigurationManagerExtensions.SetConfiguration(config);

            var redisHost    = ConfigurationManagerExtensions.GetValueByKey("Redis:Host") ?? "127.0.0.1";
            var redisPort    = ConfigurationManagerExtensions.GetValueByKey("Redis:Port") ?? "6379";
            var redisPwd     = ConfigurationManagerExtensions.GetValueByKey("Redis:Password") ?? string.Empty;
            int?redisPortInt = null;

            if (!string.IsNullOrEmpty(redisPort))
            {
                redisPortInt = int.Parse(redisPort);
            }

            RedisUsage.RedisServices.RedisServices.Init(redisHost, redisPortInt, redisPwd);
        }
예제 #8
0
        public void When_one_trigger_callback_is_registered_but_target_is_not_available_Then_the_request_succeeds()
        {
            var packageUri = Any.Uri();

            ConfigurationManagerExtensions.AddFakeAppServiceRuntimeSettings();

            using (var server = Microsoft.Owin.Testing.TestServer.Create <Startup>())
            {
                server.HttpClient.PutAsync(String.Format("/api/Trigger?triggerId={0}", Any.Guid()),
                                           Any.Azure.AppServiceTrigger.MyGetConnectorTriggerBody(Any.Uri().ToString()).ToJsonStringContent())
                .Wait();

                server.HttpClient
                .AsMyGetTriggerSource()
                .PostAsync("/api/MyGetWebhook/",
                           Any.MyGet.WebHooks.PackageAddedPayload(packageUri).ToJsonStringContent("application/vnd.myget.webhooks.v1+json"))
                .Result
                .ShouldSucceed();
            }
        }
예제 #9
0
 public EncodingOptions GetEncodingOptions()
 {
     return(ConfigurationManagerExtensions.GetConfiguration <EncodingOptions>(_config, "encoding"));
 }
예제 #10
0
 public SampleDbContext()
     : base(ConfigurationManagerExtensions.GetConnectionString("SampleDbContext"))
 {
 }
 public AllInOneDbContext() : base(ConfigurationManagerExtensions.GetConnectionString("AllInOneDbContext"))
 {
 }
 public EventSourcingDbContext()
     : base(ConfigurationManagerExtensions.GetConnectionString("EventSourcingDbContext"))
 {
 }
예제 #13
0
 public Startup(IConfiguration configuration)
 {
     Configuration = configuration;
     ConfigurationManagerExtensions.SetConfiguration(configuration);
 }
예제 #14
0
 public UserDomainDbContext(string connectionString)
     : base(ConfigurationManagerExtensions.GetConnectionString("UserDomainDbContext"))
 {
 }
예제 #15
0
 public AuthenticateDbContext(string connectionString)
     : base(ConfigurationManagerExtensions.GetConnectionString("AuthenticateDbContext"))
 {
 }
        public void GetVerificationEnvironmentReturnsNullIfConfigurationManagerIsNull()
        {
            var candidate = ConfigurationManagerExtensions.GetVerificationEnvironment(null);

            Assert.IsNull(candidate);
        }
예제 #17
0
        public static void Main(string[] args)
        {
            var redisHost    = ConfigurationManagerExtensions.GetValueByKey("Redis:Host") ?? "127.0.0.1";
            var redisPort    = ConfigurationManagerExtensions.GetValueByKey("Redis:Port") ?? "6379";
            var redisPwd     = ConfigurationManagerExtensions.GetValueByKey("Redis:Password") ?? string.Empty;
            int?redisPortInt = null;

            if (!string.IsNullOrEmpty(redisPort))
            {
                redisPortInt = int.Parse(redisPort);
            }

            RedisUsage.RedisServices.RedisServices.Init(redisHost, redisPortInt, redisPwd);

            _kafkaHost = ConfigurationManagerExtensions.GetValueByKey("Kafka:Host") ?? "127.0.0.1:9092";
            var mqttHost = ConfigurationManagerExtensions.GetValueByKey("Mqtt:Host") ?? "127.0.0.1";

            _mqttConfig = new Dictionary <string, object>
            {
                { "bootstrap.servers", mqttHost },
                { "acks", "all" }
            };

            _mqttServer = _mqttfactory.CreateMqttServer();
            _mqttServer.ClientConnected            += _mqttServer_ClientConnected;
            _mqttServer.ClientDisconnected         += _mqttServer_ClientDisconnected;
            _mqttServer.ClientSubscribedTopic      += _mqttServer_ClientSubscribedTopic;
            _mqttServer.ClientUnsubscribedTopic    += _mqttServer_ClientUnsubscribedTopic;
            _mqttServer.ApplicationMessageReceived += _mqttServer_ApplicationMessageReceived;

            MqttServerOptions options = BuildMqttServerOptions();

            var tserver = _mqttServer.StartAsync(options);

            tserver.Wait();

            Console.WriteLine("server started with mqttConfig: " + JsonConvert.SerializeObject(_mqttConfig));
            Console.WriteLine("server started with kafkaConfig: " + JsonConvert.SerializeObject(_kafkaHost));

            while (true)
            {
                Console.WriteLine("--------------");
                Console.WriteLine("Type 'quit' to quit");

                var cmd = Console.ReadLine();

                if (cmd == "quit")
                {
                    var tserverStop = _mqttServer.StopAsync();
                    tserver.Wait();

                    Environment.Exit(0);
                    return;
                }
                if (cmd == "kafka-test")
                {
                    TestPushDataToKafka();
                }
                if (cmd.StartsWith("s-p"))
                {
                    try
                    {
                        var clientId = cmd.Substring("s-p".Length + 1).Trim();

                        _mqttServer.PublishAsync(new MqttApplicationMessageBuilder()
                                                 .WithTopic(clientId)
                                                 .WithPayload("Ok Halo client")
                                                 .WithAtLeastOnceQoS()
                                                 .Build()
                                                 );
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
            }
        }
 public CommandEventStorageDbContext() 
     : base(ConfigurationManagerExtensions.GetConnectionString("CommandEventStorageDbContext"))
 {
 }
        public void GetVerificationPrefixReturnsDefaultIfConfigurationManagerIsNull()
        {
            var candidate = ConfigurationManagerExtensions.GetVerificationPrefix(null);

            Assert.AreEqual(ConfigurationManagerExtensions.DefaultVerificationPrefix, candidate);
        }
 public ProjectSampleDatabase()
     : base(ConfigurationManagerExtensions.GetConnectionString("ProjectSampleDatabase"))
 {
 }