示例#1
0
        public MessageConsumerBase(RabbitMQSettings settings, ISerializer serializer, string queueName)
        {
            _settings   = settings;
            _serializer = serializer;
            _queueName  = queueName;
            var factory = new ConnectionFactory
            {
                HostName = _settings.Hostname,
                UserName = _settings.Username,
                Password = _settings.Password
            };

            _connection = factory.CreateConnection();
            _channel    = _connection.CreateModel();
        }
示例#2
0
        public static void AddRawRabbit(this IServiceCollection services, IConfiguration configuration)
        {
            var settings = new RabbitMQSettings();
            var section  = configuration.GetSection("rabbitmq");

            section.Bind(settings);
            var client = RawRabbitFactory.CreateSingleton(new RawRabbitOptions
            {
                ClientConfiguration = settings,
                DependencyInjection = ioc => ioc.AddSingleton <ISerializer, CustomSerializer>()
            });

            services.AddSingleton <IBusClient>(client);
            services.AddScoped <IMessageBus, RawRabbitMessageBus>();
        }
示例#3
0
        public RabbitMQConsumer(RabbitMQSettings config, ILogger logger)
        {
            this.logger = logger;
            this.logger.InitLogger();

            try
            {
                InitConnection(config);
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message);
                throw new Exception("Unable connect to RabbitMQ");
            }
        }
示例#4
0
        private string getConnectionStringFromSettings(RabbitMQSettings settings)
        {
            StringBuilder connectionstrinSb = new StringBuilder("amqp://");

            connectionstrinSb.Append(settings.Username);
            connectionstrinSb.Append(":");
            connectionstrinSb.Append(settings.Password);
            connectionstrinSb.Append("@");
            connectionstrinSb.Append(settings.Hostname);
            connectionstrinSb.Append(":");
            connectionstrinSb.Append(settings.Port);
            connectionstrinSb.Append("/");
            connectionstrinSb.Append("%2f");

            return(connectionstrinSb.ToString());
        }
示例#5
0
        private void InitConnection(RabbitMQSettings config)
        {
            queueName = config.QueueName;

            connection = config.CreateConnection();
            connection.ConnectionShutdown += (o, e) => { logger.Error("Сервер не отвечает"); };
            connection.CallbackException  += (o, e) => { logger.Error(e.Exception.Message); };

            channel = connection.CreateModel();
            channel.ExchangeDeclare("main", "fanout", durable: true);
            channel.QueueDeclare(queueName, true, false, false, null);
            channel.QueueBind(queueName, "main", "", null);

            consumer           = new EventingBasicConsumer(channel);
            consumer.Received += Receive;
        }
示例#6
0
        public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host
        .CreateDefaultBuilder()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .ConfigureAppConfiguration((hostingContext, config) => {
            var env = hostingContext.HostingEnvironment;
            config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);

            config.AddEnvironmentVariables();
            if (args != null)
            {
                config.AddCommandLine(args);
            }
        })
        .ConfigureServices((hostContext, services) => {
            IConfiguration configuration = hostContext.Configuration;
            var rabbitMQSettings         = new RabbitMQSettings();
            var settings = configuration.GetSection(nameof(RabbitMQSettings)).Get <RabbitMQSettings>();
            configuration.GetSection(nameof(RabbitMQSettings)).Bind(rabbitMQSettings);
            var rabbitMQSeriveURI = string.Format(settings.RabbitMQServiceURI, System.Environment.GetEnvironmentVariable(nameof(EnvironmentVariables.RMQ_USER)), System.Environment.GetEnvironmentVariable(nameof(EnvironmentVariables.RMQ_PASSWORD)), System.Environment.GetEnvironmentVariable(nameof(EnvironmentVariables.RMQ_HOST)), System.Environment.GetEnvironmentVariable(nameof(EnvironmentVariables.RMQ_PORT)));

            services.AddTransient <MessageService> (s => {
                var factory = new ConnectionFactory {
                    Uri = new Uri(rabbitMQSeriveURI),
                    AutomaticRecoveryEnabled = true,
                    NetworkRecoveryInterval  = TimeSpan.FromSeconds(10)
                };
                var connection = factory.CreateConnection();
                var channel    = connection.CreateModel();
                foreach (var queue in rabbitMQSettings.Queues)
                {
                    channel.QueueDeclare(queue: queue.QueueName,
                                         durable: queue.Durable,
                                         exclusive: false,
                                         autoDelete: false);
                }
                foreach (var bind in rabbitMQSettings.Bindings)
                {
                    channel.QueueBind(bind.QueueName, bind.ExchangeName, bind.RoutingKey);
                }
                return(new MessageService(channel, rabbitMQSettings));
            });
            Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(configuration).CreateLogger();
            services.AddHostedService <Worker> ();
        })
        .UseSerilog();
示例#7
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var configBuilder = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json", optional: true);
            var config = configBuilder.Build();

            var rabbitMQSettings = new RabbitMQSettings();

            new ConfigureFromConfigurationOptions <RabbitMQSettings>(
                Configuration.GetSection("RabbitMQSettings"))
            .Configure(rabbitMQSettings);
            services.AddSingleton(rabbitMQSettings);
            services.AddScoped <IProducerService, ProducerService>();

            services.AddControllers();
        }
示例#8
0
        static async Task MainAsync()
        {
            var host = new HostBuilder()
                       .ConfigureServices(services =>
            {
                var settings = new RabbitMQSettings {
                    ServerName = "192.168.80.129", UserName = "******", Password = "******"
                };

                services.AddOptions()
                .AddSingleton <IOptions <RabbitMQSettings> >(new OptionsWrapper <RabbitMQSettings>(settings))
                .AddRabbitMQ(builder =>
                {
                    builder.Subscribe <MyMessage>(GreetingHandler);
                });
            })
                       .Build();

            Console.WriteLine("Starting...");
            await host.StartAsync();

            var messenger = host.Services.GetRequiredService <IRabbitMQMessenger>();

            Console.WriteLine("Running. Type text and press ENTER to send a message.");

            Console.CancelKeyPress += async(sender, e) =>
            {
                Console.WriteLine("Shutting down...");
                await host.StopAsync(new CancellationTokenSource(3000).Token);

                Environment.Exit(0);
            };

            while (true)
            {
                var line = Console.ReadLine();

                if (!string.IsNullOrEmpty(line))
                {
                    var message = new MyMessage {
                        Greeting = line, Timestamp = DateTimeOffset.Now
                    };
                    messenger.Publish(message);
                }
            }
        }
示例#9
0
 public object SymbolRate([FromServices] RabbitMQSettings rabbitMQSettings, [FromBody] Symbols symbols)
 {
     if (symbols != null && symbols.SymbolsToRate.Any())
     {
         var res = _producerService.SendMessageToQueue(rabbitMQSettings, symbols);
         return(new
         {
             Resultado = res
         });
     }
     else
     {
         return(new
         {
             Erro = "SymbolsToRate must not contain elements"
         });
     }
 }
示例#10
0
        public const int SecondsToSend = 5000; //5 seconds

        public ConsumeSendMessageMQService(IServiceProvider services, ILoggerFactory loggerFactory, IConfiguration configuration, RabbitMQSettings rabbitMQSettings)
        {
            Services       = services;
            _configuration = configuration;
            this._logger   = loggerFactory.CreateLogger <ConsumeSendMessageMQService>();

            _rabbitMQSettings = rabbitMQSettings;

            _factory = new ConnectionFactory
            {
                HostName = _rabbitMQSettings.HostName,
                Port     = int.Parse(_rabbitMQSettings.Port),
                UserName = _rabbitMQSettings.UserName,
                Password = _rabbitMQSettings.Password
            };

            _factory.AutomaticRecoveryEnabled = true;
        }
示例#11
0
        public static IServiceCollection AddMessaging(this IServiceCollection services, IConfiguration configuration)
        {
            RabbitMQSettings rabbitMQSettings = new RabbitMQSettings();

            configuration.GetSection("RabbitMQSettings").Bind(rabbitMQSettings);

            services.AddRawRabbit(new RawRabbitOptions
            {
                ClientConfiguration = new RawRabbit.Configuration.RawRabbitConfiguration
                {
                    Username               = rabbitMQSettings.Username,
                    Password               = rabbitMQSettings.Password,
                    VirtualHost            = rabbitMQSettings.VirtualHost,
                    Port                   = rabbitMQSettings.Port,
                    Hostnames              = rabbitMQSettings.Hostnames,
                    RequestTimeout         = TimeSpan.FromSeconds(rabbitMQSettings.RequestTimeout),
                    PublishConfirmTimeout  = TimeSpan.FromSeconds(rabbitMQSettings.PublishConfirmTimeout),
                    RecoveryInterval       = TimeSpan.FromSeconds(rabbitMQSettings.RecoveryInterval),
                    PersistentDeliveryMode = rabbitMQSettings.PersistentDeliveryMode,
                    AutoCloseConnection    = rabbitMQSettings.AutoCloseConnection,
                    AutomaticRecovery      = rabbitMQSettings.AutomaticRecovery,
                    TopologyRecovery       = rabbitMQSettings.TopologyRecovery,

                    Exchange = new RawRabbit.Configuration.GeneralExchangeConfiguration
                    {
                        Durable    = true,
                        AutoDelete = false,
                        Type       = RawRabbit.Configuration.Exchange.ExchangeType.Topic
                    },
                    Queue = new RawRabbit.Configuration.GeneralQueueConfiguration
                    {
                        Durable    = true,
                        AutoDelete = false,
                        Exclusive  = false
                    }
                }
            });

            services.AddScoped <IEventPublisher, OutboxEventPublisher>();
            services.AddSingleton <Outbox>();
            services.AddHostedService <OutboxSendingService>();
            return(services);
        }
示例#12
0
        private void InitializeExchange(RabbitMQSettings settings, string exchangeName)
        {
            using (var handler = new HttpClientHandler {
                Credentials = new NetworkCredential(settings.Username, settings.Password)
            })
                using (var client = new HttpClient(handler))
                {
                    var result = client.GetAsync($"http://{settings.Host}:{settings.ApiPort}/api/exchanges").Result;

                    var data = JsonConvert.DeserializeObject <List <Exchange> >(result.Content.ReadAsStringAsync().Result);

                    if (data.Any(x => x.Name == exchangeName) == false)
                    {
                        Log.Information("Initializing exchange @{ExchangeName}", exchangeName);

                        _channel.ExchangeDeclare(MessageExchanges.USER_CREATED, "fanout");
                    }
                }
        }
示例#13
0
        static void Main(string[] args)
        {
            System.Console.WriteLine("Select a broker: \"R\" - RabbitMQ, \"K\" - Kafka");
            string choice = System.Console.ReadLine();

            while (choice != "R" && choice != "K")
            {
                System.Console.WriteLine("Try again");
                choice = System.Console.ReadLine();
            }

            try
            {
                if (choice == "K")
                {
                    //TODO: KafkaSettings
                    producer = new KafkaProducer();
                }
                else
                {
                    RabbitMQSettings settings = (RabbitMQSettings)ConfigurationManager.GetSection("rabbitMQSettings");
                    producer = new RabbitMQProducer(settings);
                }
                producer.Initialize();
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.Message);
                producer?.Dispose();
                System.Console.Read();
                return;
            }

            System.Console.WriteLine("For exit enter \"X\"");
            System.Console.WriteLine("Enter count random messages");


            Sending();
        }
示例#14
0
        static void Main(string[] args)
        {
            System.Console.WriteLine("Select a broker: \"R\" - RabbitMQ, \"K\" - Kafka");
            string choice = System.Console.ReadLine();

            while (choice != "R" && choice != "K")
            {
                System.Console.WriteLine("Try again");
                choice = System.Console.ReadLine();
            }

            try
            {
                if (choice == "K")
                {
                    //TODO: KafkaSettings
                    consumer = new KafkaConsumer(logger);
                }
                else
                {
                    RabbitMQSettings settings = (RabbitMQSettings)ConfigurationManager.GetSection("rabbitMQSettings");
                    consumer = new RabbitMQConsumer(settings, logger);
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.Message);
                System.Console.Read();
                return;
            }

            consumer.NewMessage += HandlingMessage;
            consumer.StartConsume();

            System.Console.Read();
            consumer.Close();
        }
示例#15
0
 public PaginatedOrderMessageSender(RabbitMQSettings settings, ISerializer serializer)
     : base(settings, QueueName.RetrievePaginatedOrder, serializer)
 {
 }
示例#16
0
 public UpdateOrderDeliveryConsumer(RabbitMQSettings settings, ISerializer serializer, UpdateOrderDeliveryHandler service)
     : base(settings, serializer, QueueName.UpdateOrderDelivery)
 {
     _handler = service;
 }
示例#17
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(c =>
            {
                c.AddPolicy("AllowOrigin", options => options.WithOrigins("http://*****:*****@+";
                options.User.RequireUniqueEmail = false;
            });
            services.AddScoped<DbContext, NoisContext>();
            services.AddScoped<UserManager<User>, UserManager<User>>();
            services.AddScoped<RoleManager<Role>, RoleManager<Role>>();
            services.AddTransient(typeof(IRepositoryAsync<>), typeof(EfRepository<>));
            services.AddTransient(typeof(IUnitOfWork), typeof(UnitOfWork));
            services.AddSingleton(typeof(IRabbitMQService), typeof(RabbitMQService));
            #region Configure for Repositories
            var allRepositoryInterfaces = Assembly.GetAssembly(typeof(IRepositoryAsync<>))
                .GetTypes().Where(t => t.Name.EndsWith("Repository")).ToList();
            var allRepositoryImplements = Assembly.GetAssembly(typeof(EfRepository<>))
                .GetTypes().Where(t => t.Name.EndsWith("Repository")).ToList();

            foreach (var repositoryType in allRepositoryInterfaces.Where(t => t.IsInterface))
            {
                var implement = allRepositoryImplements.FirstOrDefault(c => c.IsClass && repositoryType.Name.Substring(1) == c.Name);
                if (implement != null) services.AddTransient(repositoryType, implement);
            }
            #endregion Configure for Repositories
            #region Configure for Serivces
            var allServicesInterfaces = Assembly.GetAssembly(typeof(IService))
                .GetTypes().Where(t => t.Name.EndsWith("Service")).ToList();
            var allServiceImplements = Assembly.GetAssembly(typeof(Service))
                .GetTypes().Where(t => t.Name.EndsWith("Service")).ToList();

            foreach (var serviceType in allServicesInterfaces.Where(t => t.IsInterface))
            {
                var implement = allServiceImplements.FirstOrDefault(c => c.IsClass && serviceType.Name.Substring(1) == c.Name);
                if (implement != null) services.AddTransient(serviceType, implement);
            }

            #endregion Configure for Serivces

            //services.AddControllers(options =>
            //{
            //    options.Filters.Add<ValidationFilter>();
            //}).AddFluentValidation(x => x.RegisterValidatorsFromAssemblyContaining<Startup>());
            services.AddControllers();
            //Register the Swagger generator
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo
                {
                    Version = "v1",
                    Title = "Mentor API",
                    Description = "ASP.NET Core Web API For Mentor Project",
                    TermsOfService = new Uri("https://nois.vn"),
                    Contact = new OpenApiContact
                    {
                        Name = "Mentor",
                        Email = string.Empty,
                        Url = new Uri("https://mentor4u.vn"),
                    },
                    License = new OpenApiLicense
                    {
                        Name = "Use under Mentor",
                        Url = new Uri("https://mentor4u.vn"),
                    }
                });


                c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
                {
                    Description =
                    "JWT Authorization header using the Bearer scheme. \r\n\r\n Enter 'Bearer' [space] and then your token in the text input below.\r\n\r\nExample: \"Bearer 12345abcdef\"",
                    Name = "Authorization",
                    In = ParameterLocation.Header,
                    Type = SecuritySchemeType.ApiKey,
                    Scheme = "Bearer"
                });

                c.AddSecurityRequirement(new OpenApiSecurityRequirement()
                {
                    {
                        new OpenApiSecurityScheme
                        {
                            Reference = new OpenApiReference
                            {
                                Type = ReferenceType.SecurityScheme,
                                Id = "Bearer"
                            },
                            Scheme = "Bearer",
                            Name = "Bearer",
                            In = ParameterLocation.Header,

                        },
                        new List<string>()
                    }
                });
            });

            //AutoMapper
            services.AddAutoMapper(typeof(Startup));

            //Hangfire service
            //HangfireService(services);

        }
 public RabbitMQEventBus(RabbitMQSettings settings)
 {
     bus = new RabbitMQBus <IDomainEvent>(settings);
 }
示例#19
0
 public BotResponseProducerRMQ(IOptions <RabbitMQSettings> settings)
 {
     _rabbitMQSettings = settings.Value;
 }
示例#20
0
 public RabbitMQBus(RabbitMQSettings settings)
 {
     this.settings = settings;
 }
 public MQProductsRequestor(RabbitMQSettings settings)
 {
     _settings = settings;
 }
示例#22
0
 public UpdateOrderProductsMessageSender(RabbitMQSettings settings, ISerializer serializer)
     : base(settings, QueueName.UpdateOrderProducts, serializer)
 {
 }
 public RabbitMQIntegrationBus(RabbitMQSettings settings)
 {
     bus = new RabbitMQBus <IIntegrationEvent>(settings);
 }
示例#24
0
 public CancelOrderMessageSender(RabbitMQSettings settings, ISerializer serializer)
     : base(settings, QueueName.CancelOrders, serializer)
 {
 }
示例#25
0
 public PublisherController(IOptions <RabbitMQSettings> rabbitMQSettings)
 {
     _rabbitMQSettings = rabbitMQSettings.Value;
 }
示例#26
0
        public EasyNetQService(IConfiguration configuration, IWeb3GethService web3geth_service, ILogger <EasyNetQService> logger)
        //public EasyNetQService(IConfiguration configuration, IWeb3GethService web3geth_service)
        {
            _rabbitmq_settings   = configuration.GetSection("RabbitMQSettings").Get <RabbitMQSettings>();
            _blockchain_settings = configuration.GetSection("BlockchainSettings").Get <BlockchainSettings>();

            //_bus = RabbitHutch.CreateBus(configuration.GetConnectionString("RabbitMQConnectionString"));

            //_bus = RabbitHutch.CreateBus(configuration.GetConnectionString("RabbitMQConnectionString"),
            //  serviceRegister => serviceRegister.Register<IConsumerErrorStrategy, DeadLetterStrategy>());

            _bus = RabbitHutch.CreateBus(configuration.GetConnectionString("RabbitMQConnectionString"),
                                         serviceRegister => serviceRegister.Register <IConsumerErrorStrategy, AlwaysRequeueErrorStrategy>());

            //_bus.Receive<string>(queue: QueueNameFormatting("intermediate2blockchain"), onMessage: message => TestString(message));

            //_advanced_client = RabbitHutch.CreateBus(configuration.GetConnectionString("RabbitMQConnectionString")).Advanced;

            _queue_intermediate2blockchain = _bus.Advanced.QueueDeclare(name: QueueNameFormatting("intermediate2blockchain"));

            _queue_blockchain2intermdiate = _bus.Advanced.QueueDeclare(name: QueueNameFormatting("blockchain2intermediate"));

            _web3geth_service = web3geth_service;

            _invlid_block_hash = _web3geth_service.BlockchainManager.INVALID_BLOCK_HASH;

            _logger = logger;

            var ASPNETCORE_ENVIRONMENT = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

            _logger.LogInformation("ASPNETCORE_ENVIRONMENT = {ASPNETCORE_ENVIRONMENT}", ASPNETCORE_ENVIRONMENT);

            _logger.LogDebug("Initialized: EasyNetQService");

            // TEST Flight.Create
            foreach (var i in Enumerable.Range(0, 20))
            {
                var request = new I2B_Request
                {
                    task_uuid = $"task_uuid_{i}",
                    task      = new I2B_Request_Task()
                    {
                        name    = "createNewBlockchainFlight",
                        payload = "{\"pid\":28,\"ufid\":72,\"flight_code\":\"CX564\",\"fs_flight_code\":\"CX564\",\"departure_airport\":\"HKG\",\"arrival_airport\":\"TPE\",\"departure_utc_offset_hours\":8,\"arrival_utc_offset_hours\":8,\"scheduled_departure_date\":20170719,\"scheduled_departure_date_time\":\"2017-07-19T05:10:00Z\",\"scheduled_departure_date_time_local\":\"2017-07-19T13:10:00+08:00\",\"scheduled_arrival_date_time\":\"2017-07-19T07:10:00Z\",\"scheduled_arrival_date_time_local\":\"2017-07-19T15:10:00+08:00\",\"hash\":\"0xad037ad2f98401ea9b02b8fa4373e444858836e1acbddf2cea73c126dca40083\"}"
                    }
                };

                SendI2B_Request(request).Wait();
            }

            //// TEST Flight.SetFlightAttribute
            //foreach (var i in Enumerable.Range(0, 1))
            //{
            //  var request = new I2B_Request
            //  {
            //    task_uuid = $"deleteBlockchainFlight_test",
            //    task = new I2B_Request_Task()
            //    {
            //      name = "deleteBlockchainFlight",
            //      payload = "{\"flight_id\":80,\"pid\":29,\"ufid\":79,\"flight_code\":\"CI172\",\"fs_flight_code\":\"CI172\",\"departure_utc_offset_hours\":8,\"arrival_utc_offset_hours\":9,\"departure_airport\":\"TPE\",\"arrival_airport\":\"KIX\",\"status\":null,\"scheduled_departure_date\":\"20170720\",\"scheduled_departure_date_time\":\"2017-07-20T06:20:00.000Z\",\"scheduled_departure_date_time_local\":\"2017-07-20T14:20:00+08:00\",\"actual_departure_date_time\":null,\"actual_departure_date_time_local\":null,\"scheduled_arrival_date_time\":\"2017-07-20T09:05:00.000Z\",\"scheduled_arrival_date_time_local\":\"2017-07-20T18:05:00+09:00\",\"actual_arrival_date_time\":null,\"actual_arrival_date_time_local\":null,\"cancel_date_time\":null,\"cancel_date_time_local\":null,\"hash\":\"0xde52a4b7fe8b7d69c68c37ce60639b989e928a457dace6dda065569b4138060b\",\"contract_address\":\"0x4f82d90edeecf2abc5880e8c41aa288312ce2981\",\"flight_status_source\":null,\"flight_status_fed\":false,\"flight_status_confirmed_txhash\":null,\"delay_notification_date_time\":null,\"deleted\":false,\"creation_txhash\":null,\"created_at\":\"2017-07-20T05:37:02.000Z\",\"version\":0}"
            //    }
            //  };

            //  DeleteFlight delete_flight = JsonConvert.DeserializeObject<DeleteFlight>(request.task.payload);

            //  Tuple<string, string> result = _web3geth_service.Flight.SetFlightAllAttributes(
            //    contract_address: delete_flight.contract_address,
            //    task_uuid: request.task_uuid,
            //    status: delete_flight.status,
            //    actual_departure_date_time: delete_flight.actual_departure_date_time,
            //    actual_departure_date_time_local: delete_flight.actual_departure_date_time_local,
            //    actual_arrival_date_time: delete_flight.actual_arrival_date_time,
            //    actual_arrival_date_time_local: delete_flight.actual_arrival_date_time_local,
            //    cancel_date_time: delete_flight.cancel_date_time,
            //    cancel_date_time_local: delete_flight.cancel_date_time_local,
            //    deleted: delete_flight.deleted.ToString(),
            //    flight_status_source: delete_flight.flight_status_source,
            //    flight_status_fed: delete_flight.flight_status_fed.ToString(),
            //    delay_notification_date_time: delete_flight.delay_notification_date_time
            //    ).Result;

            //// TEST Policy.Create
            //foreach (var i in Enumerable.Range(0, 10))
            //{
            //  var request = new I2B_Request
            //  {
            //    task_uuid = $"createNewBlockchainPolicy_test{i}",
            //    task = new I2B_Request_Task()
            //    {
            //      name = "createNewBlockchainPolicy",
            //      payload = "{\"status\":\"activated\",\"deleted\":false,\"version\":0,\"pid\":31,\"psn\":\"000033\",\"tenant_id\":1,\"start_date_time\":\"2017-07-20T08:00:00.000Z\",\"end_date_time\":\"2017-07-21T08:00:00.000Z\",\"start_date_time_local\":\"201707200800\",\"end_date_time_local\":\"201707210800\",\"created_at\":\"2017-07-20T05:37:51.601Z\"}"
            //    }
            //  };

            //  SendI2B_Request(request).Wait();
            //}

            ////TODO contract_address "0xdec46ce3bc57e48fa986173e223c176a26336922"
            //// TEST Policy.SetFlightAttribute
            //foreach (var i in Enumerable.Range(0, 1))
            //{
            //  var request = new I2B_Request
            //  {
            //    task_uuid = $"deleteBlockchainFlight_test",
            //    task = new I2B_Request_Task()
            //    {
            //      name = "deleteBlockchainFlight",
            //      payload = "{\"pid\":23,\"psn\":\"000024\",\"tenant_id\":1,\"start_date_time\":\"2017-07-19T08:00:00.000Z\",\"end_date_time\":\"2017-07-20T08:00:00.000Z\",\"start_date_time_local\":\"201707190800\",\"end_date_time_local\":\"201707200800\",\"status\":\"activated\",\"contract_address\":\"0xdec46ce3bc57e48fa986173e223c176a26336922\",\"deleted\":false,\"creation_txhash\":null,\"created_at\":\"2017-07-19T07:12:42.000Z\",\"version\":0}"
            //    }
            //  };

            //  //DeleteBlockchainPolicy(request).Wait();

            //  SendI2B_Request(request).Wait();
            //}

            // 需要 Node.js 那邊配合在 Message Propertoes 加入 type: FDBC_Shared.DTO.I2B_Request:FDBC_Shared
            // 目前測試過 PrefetchCount = 1 可以穩定處理所有message, N大於1都會在最後一批有 noacked N-1 卡住, 要關掉 blockchain module 才會 release
            ushort prefetch_count = 1;

            _bus.Advanced.Consume <I2B_Request>(
                _queue_intermediate2blockchain,
                (msg, info) => OnReceiving_I2B_Request(msg, info),
                configure => configure.WithPrefetchCount(prefetch_count)
                );

            //_client.Receive<I2B_Request>(queue: QueueNameFormatting("intermediate2blockchain"), onMessage: message =>
            //  EasyNetQActions.OnReceiving_I2B_Request(message)
            //);
        }
示例#27
0
 public UpdateOrderProductsConsumer(RabbitMQSettings settings, ISerializer serializer, UpdateOrderItemsHandler handler)
     : base(settings, serializer, QueueName.UpdateOrderProducts)
 {
     _handler = handler;
 }
示例#28
0
 public PaginatedOrdersConsumer(RabbitMQSettings settings, ISerializer serializer, RetrievePaginatedOrdersHandler service)
     : base(settings, serializer, QueueName.RetrievePaginatedOrder)
 {
     _handler = service;
 }
示例#29
0
        public ConsumeGetMessagesMQService(IServiceProvider services, ILoggerFactory loggerFactory, IConfiguration configuration, RabbitMQSettings rabbitMQSettings)
        {
            Services       = services;
            _configuration = configuration;
            this._logger   = loggerFactory.CreateLogger <ConsumeGetMessagesMQService>();


            _rabbitMQSettings = rabbitMQSettings;
        }
 public RabbitMQProducerChannelPooledObjectPolicy(IOptions <RabbitMQSettings> settings)
 {
     _settings   = settings.Value;
     _connection = GetConnection();
 }