/// <summary>
        /// Регистрирует тип сообщения
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="provider"></param>
        /// <returns></returns>
        public static IMessageTypeProvider Register <T>(this IMessageTypeProvider provider)
        {
            var type = typeof(T);
            var tag  = AttributeHelper.GetPropertyName <MessageQueueNameAttribute>(type, true);

            return(provider.Register(tag, type));
        }
Ejemplo n.º 2
0
        public void RegisterCqrsStuff(IMessageTypeProvider messageTypeProvider, IHandlerTypeProvider handlerTypeProvider)
        {
            var types = this.GetType().Assembly.GetTypes();

            messageTypeProvider.RegisterMessages(types);
            handlerTypeProvider.RegisterHandlers(types);
        }
Ejemplo n.º 3
0
 public JsonClient(IClient client, IMessageTypeProvider typeProvider, ISerializer serializer)
 {
     Client = client ?? throw new ArgumentNullException(nameof(client));
     MessageTypeProvider     = typeProvider ?? throw new ArgumentNullException(nameof(typeProvider));
     Serializer              = serializer ?? throw new ArgumentNullException(nameof(serializer));
     Client.MessageReceived += HandleClientMessage;
     Client.Disconnected    += HandleDisconnection;
 }
Ejemplo n.º 4
0
 public MessagingHostOptionsBuilder(MessagingHostBuilder hostBuilder, IServiceCollection serviceCollection,
                                    IMessageTypeProvider messageTypeProvider, IMessageTopicProvider topicProvider)
 {
     _hostBuilder         = hostBuilder;
     _serviceCollection   = serviceCollection;
     _messageTypeProvider = messageTypeProvider;
     _topicProvider       = topicProvider;
 }
        private static Result <string> GetMessageType <TType>(IMessageTypeProvider messageTypeProvider)
        {
            if (TypesMessageNameCache.TryGetValue(typeof(TType), out var type))
            {
                return(Result.Ok(type));
            }

            return(messageTypeProvider.GetMessageType <TType>()
                   .OnSuccess(messageType => { TypesMessageNameCache.TryAdd(typeof(TType), messageType); }));
        }
        public static string[] GetMessageTypes <TType>(IMessageTypeProvider messageTypeProvider)
        {
            var messageType = GetMessageType <TType>(messageTypeProvider);

            if (messageType.IsSuccess)
            {
                return(TypeMetadataCache <TType> .MessageTypeNames.Concat(new[]
                {
                    messageType.Value
                })
                       .ToArray());
            }

            return(TypeMetadataCache <TType> .MessageTypeNames);
        }
Ejemplo n.º 7
0
        public async Task InvokeAsync(
            HttpContext httpContext,
            IMessageTypeProvider messageTypeProvider)
        {
            var requestPath = httpContext.Request.Path;

            if (requestPath == "/CqrsInfo")
            {
                var s = "Available Messages:" + Environment.NewLine;
                foreach (var s1 in messageTypeProvider.MessagesList)
                {
                    s += $"- {s1} {Environment.NewLine}";
                }

                await httpContext.Response.WriteAsync(s);
            }
            else
            {
                await _nextMiddleware(httpContext);
            }
        }
Ejemplo n.º 8
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app,
                              IHostingEnvironment env,
                              ILoggerFactory loggerFactory,
                              IMessageTypeProvider messageTypeProvider,
                              IOptions <FrameworkConfiguration> frameworkConfigOptions,
                              IMailboxProcessor mailboxProcessor,
                              IApplicationLifetime applicationLifetime)
        {
            applicationLifetime.ApplicationStopping.Register(() =>
            {
                _commandConsumer1?.Stop();
                _commandConsumer2?.Stop();
                _commandConsumer3?.Stop();
                _domainEventProcessor?.Stop();
                _applicationEventProcessor?.Stop();
                _messagePublisher?.Stop();
                _commandBus?.Stop();
                mailboxProcessor.Stop();
            });
            mailboxProcessor.Start();
            messageTypeProvider.Register(new Dictionary <string, string>
            {
                ["Login"] = "******"
            })
            .Register("Modify", typeof(Modify));

            StartMessageQueueComponents();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler(new GlobalExceptionHandlerOptions(loggerFactory, env));
            }
            //app.UseMiniProfiler();
            PathBase = Configuration.Instance[nameof(PathBase)];
            app.UsePathBase(PathBase);

            app.Use(next => context =>
            {
                context.Request.Path = context.Request.Path.Value.Replace("//", "/");
                return(next(context));
            });

            app.Use(next => context =>
            {
                context.Request.EnableRewind();
                context.Response.EnableRewind();
                return(next(context));
            });
            //app.Use(async (context, next) =>
            //{
            //    await next();
            //    if (context.Response.StatusCode == StatusCodes.Status404NotFound)
            //    {
            //        context.Request.Path = "/Home/Error";
            //        await next();
            //    }
            //});

            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });

            app.UseStaticFiles();
            app.UseMvc(routes =>
            {
                routes.MapRoute("default",
                                "{controller=Home}/{action=Index}/{id?}");
            });

            app.UseLogLevelController();
            app.UseMessageProcessorDashboardMiddleware();

            var logger = loggerFactory.CreateLogger <Startup>();

            logger.SetMinLevel(LogLevel.Information);
            logger.LogInformation($"Startup configured env: {env.EnvironmentName}");
        }
Ejemplo n.º 9
0
 void IMessageTypeProvider.RegisterTypes(IMessageTypeProvider provider)
 => SelectTypesInternal(provider.GetTypes());
Ejemplo n.º 10
0
 public IMessage Deserialize(string data, IMessageTypeProvider typeProvider, IMessageNameProvider nameProvider) =>
 throw new NotImplementedException();
Ejemplo n.º 11
0
 public MessageProvider(IMessageTypeProvider messageTypeProvider)
 {
     _messageTypeProvider = messageTypeProvider;
 }
Ejemplo n.º 12
0
 public EventNamespaceMessageSerializer(IMessageTypeProvider messageTypeProvider)
 {
     _messageTypeProvider = messageTypeProvider;
 }
Ejemplo n.º 13
0
 public void RegisterCqrsStuff(IMessageTypeProvider messageTypeProvider, IHandlerTypeProvider handlerTypeProvider)
 {
     // throw new NotImplementedException();
 }