// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); var rabbitHost = this.Configuration["rabbit:host"]; var exchangeName = this.Configuration["rabbit:exchange"]; var queueName = this.Configuration["rabbit:queue"]; var connectionFactory = new ConnectionFactory { HostName = rabbitHost }; var messageHandlerExecutionContext = new ServiceProviderMessageHandlerExecutionContext(services, x => x.BuildServiceProvider()); var messageSerializer = new MessageJsonSerializer(); var eventSubscriber = new RabbitEventBus(connectionFactory, messageSerializer, messageHandlerExecutionContext, exchangeName, ExchangeType.Topic); eventSubscriber.Subscribe <AccountAuthenticatedEvent, AccountAuthenticatedEventHandler>(); services.AddSingleton <IEventSubscriber>(eventSubscriber); services .AddApworks() .WithDataServiceSupport(new DataServiceConfigurationOptions(sp => new EntityFrameworkRepositoryContext(new AuditingDataContext()))) .Configure(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); var rabbitHost = this.Configuration["rabbit:host"]; var exchangeName = this.Configuration["rabbit:exchange"]; var queueName = this.Configuration["rabbit:queue"]; var connectionFactory = new ConnectionFactory { HostName = rabbitHost }; var messageSerializer = new MessageJsonSerializer(); services .AddApworks() .WithEventSubscriber(x => new EventBus(connectionFactory, messageSerializer, exchangeName, ExchangeType.Topic, queueName)) .WithDefaultEventConsumer("events.*") .AddEventHandler(x => new AccountAuthenticatedEventHandler(x.GetService <IRepositoryContext>())) .WithDataServiceSupport(new DataServiceConfigurationOptions(sp => new EntityFrameworkRepositoryContext(new AuditingDataContext()))) .Configure(); var serviceProvider = services.BuildServiceProvider(); this.eventConsumer = serviceProvider.GetService <IEventConsumer>(); this.eventConsumer.Consume(); }
public void Process(string message) { var letter = MessageJsonSerializer.DeserializeMessage <Letter>(message); if (letter != null) { LetterReceived?.Invoke(letter); return; } var userNetworkEvent = MessageJsonSerializer.DeserializeMessage <UserNetworkEvent>(message); if (userNetworkEvent != null) { NetworkEventReceived?.Invoke(userNetworkEvent); return; } var charUsers = MessageJsonSerializer.DeserializeMessage <ChatUsers>(message); if (charUsers != null) { ChatUsersReceived?.Invoke(charUsers); return; } var nameSet = MessageJsonSerializer.DeserializeMessage <NameSet>(message); if (nameSet != null) { NameSetReceived?.Invoke(nameSet); return; } }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); var mongoServer = this.Configuration["mongo:server"]; var mongoPort = Convert.ToInt32(this.Configuration["mongo:port"]); var mongoDatabase = this.Configuration["mongo:db"]; var rabbitHost = this.Configuration["rabbit:host"]; var exchangeName = this.Configuration["rabbit:exchange"]; var connectionFactory = new ConnectionFactory { HostName = rabbitHost }; var messageSerializer = new MessageJsonSerializer(); var messageHandlerExecutionContext = new ServiceProviderMessageHandlerExecutionContext(services, x => x.BuildServiceProvider()); var eventPublisher = new RabbitEventBus(connectionFactory, messageSerializer, messageHandlerExecutionContext, exchangeName, ExchangeType.Topic); services.AddSingleton <IEventPublisher>(eventPublisher); services.AddApworks() // .WithEventPublisher(new EventBus(new ConnectionFactory { HostName = rabbitHost }, messageSerializer, exchangeName, ExchangeType.Topic)) .WithDataServiceSupport(new DataServiceConfigurationOptions (new MongoRepositoryContext (new MongoRepositorySettings(mongoServer, mongoPort, mongoDatabase)))) .Configure(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Reads the host machine which runs the RabbitMQ. var rabbitHost = this.Configuration["rabbit:host"]; // Reads the RabbitMQ exchange setting. var rabbitExchangeName = this.Configuration["rabbit:exchange"]; // Reads the name of the event queue. var rabbitEventQueueName = this.Configuration["rabbit:eventQueue"]; // Reads the name of the command queue. var rabbitCommandQueueName = this.Configuration["rabbit:commandQueue"]; // Reads connection string of the event store database. var eventStoreConnectionString = this.Configuration["mssql:event.db"]; // Reads connection string of the query database. var queryDatabaseConnectionString = this.Configuration["mssql:query.db"]; // Event/Command subscribers/publishers var connectionFactory = new ConnectionFactory { HostName = rabbitHost }; var messageSerializer = new MessageJsonSerializer(); var messageHandlerExecutionContext = new ServiceProviderMessageHandlerExecutionContext(services, x => x.BuildServiceProvider()); var eventSubscriber = new RabbitEventBus(connectionFactory, messageSerializer, messageHandlerExecutionContext, rabbitExchangeName, ExchangeType.Topic, rabbitEventQueueName); eventSubscriber.Subscribe <AccountCreatedEvent, AccountCreatedEventHandler>(); eventSubscriber.Subscribe <TextContentChangedEvent, TextContentChangedEventHandler>(); var commandSender = new RabbitCommandBus(connectionFactory, messageSerializer, messageHandlerExecutionContext, rabbitExchangeName, ExchangeType.Topic); var commandSubscriber = new RabbitCommandBus(connectionFactory, messageSerializer, messageHandlerExecutionContext, rabbitExchangeName, ExchangeType.Topic, rabbitCommandQueueName); commandSubscriber.Subscribe <PostTextCommand, PostTextCommandHandler>(); services.AddSingleton <IEventSubscriber>(eventSubscriber); services.AddSingleton <ICommandSender>(commandSender); services.AddSingleton <ICommandSubscriber>(commandSubscriber); // Domain Repository var eventStorageConfig = new AdoNetEventStoreConfiguration(eventStoreConnectionString); var objectSerializer = new ObjectJsonSerializer(); services.AddSingleton <ISnapshotProvider, SuppressedSnapshotProvider>(); services.AddTransient <IEventPublisher>(x => new RabbitEventBus(connectionFactory, messageSerializer, messageHandlerExecutionContext, rabbitExchangeName, ExchangeType.Topic)); services.AddTransient <IEventStore>(x => new SqlServerEventStore(eventStorageConfig, objectSerializer)); services.AddTransient <IDomainRepository, EventSourcingDomainRepository>(); // Add framework services. services.AddMvc(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Reads the host machine which runs the RabbitMQ. var rabbitHost = this.Configuration["rabbit:host"]; // Reads the RabbitMQ exchange setting. var rabbitExchangeName = this.Configuration["rabbit:exchange"]; // Reads the name of the event queue. var rabbitEventQueueName = this.Configuration["rabbit:eventQueue"]; // Reads the name of the command queue. var rabbitCommandQueueName = this.Configuration["rabbit:commandQueue"]; var connectionFactory = new ConnectionFactory { HostName = rabbitHost }; var messageSerializer = new MessageJsonSerializer(); // Add framework services. services.AddMvc(); services.AddApworks() .WithCommandSender(new CommandBus(connectionFactory, messageSerializer, rabbitExchangeName, ExchangeType.Topic)) .WithCommandSubscriber(new CommandBus(connectionFactory, messageSerializer, rabbitExchangeName, ExchangeType.Topic, rabbitCommandQueueName)) .WithDefaultCommandConsumer("commands.*") .AddCommandHandler(new PostTextCommandHandler()) .WithEventSubscriber(new EventBus(connectionFactory, messageSerializer, rabbitExchangeName, ExchangeType.Topic, rabbitEventQueueName)) .WithDefaultEventConsumer("events.*") .AddEventHandler(new AccountCreatedEventHandler(this.Configuration)) .Configure(); var serviceProvider = services.BuildServiceProvider(); this.commandSender = serviceProvider.GetService <ICommandSender>(); this.eventConsumer = serviceProvider.GetService <IEventConsumer>(); this.eventConsumer.Consume(); this.commandConsumer = serviceProvider.GetService <ICommandConsumer>(); this.commandConsumer.Consume(); }
/// <summary> /// 创建一个消息序列化组件。 /// </summary> /// <returns></returns> public static IMessageSerializer CreateMessageSerializerInstance(string formatType) { IMessageSerializer messageSerializer = null; switch (formatType) { case "json": messageSerializer = new MessageJsonSerializer(); break; case "xml": messageSerializer = new MessageXmlSerializer(); break; default: messageSerializer = new MessageJsonSerializer(); break; } return(messageSerializer); }
protected virtual void ParseEvent(object sender, string message) { var messageContext = MessageJsonSerializer.ParseMessageContext(message); if (messageContext.messageType == MessageEnum.UserMessage) { var userMessage = JsonConvert.DeserializeObject <UserMessage>(messageContext.messageBody); OnGetUserMessage?.Invoke(userMessage); } if (messageContext.messageType == MessageEnum.UmpireMessage) { var umpireMessage = JsonConvert.DeserializeObject <UmpireMessage>(messageContext.messageBody); OnGetUmpireMessage?.Invoke(umpireMessage); } if (messageContext.messageType == MessageEnum.CoachMessage) { var coachMessage = JsonConvert.DeserializeObject <CoachMessage>(messageContext.messageBody); OnGetCoachMessage?.Invoke(coachMessage); } }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); var mongoServer = this.Configuration["mongo:server"]; var mongoPort = Convert.ToInt32(this.Configuration["mongo:port"]); var mongoDatabase = this.Configuration["mongo:db"]; var rabbitHost = this.Configuration["rabbit:host"]; var exchangeName = this.Configuration["rabbit:exchange"]; var messageSerializer = new MessageJsonSerializer(); services.AddApworks() .WithEventPublisher(new EventBus(new ConnectionFactory { HostName = rabbitHost }, messageSerializer, exchangeName, ExchangeType.Topic)) .WithDataServiceSupport(new DataServiceConfigurationOptions (new MongoRepositoryContext (new MongoRepositorySettings(mongoServer, mongoPort, mongoDatabase)))) .Configure(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); var rabbitHost = this.Configuration["rabbit:host"]; var exchangeName = this.Configuration["rabbit:exchange"]; var queueName = this.Configuration["rabbit:queue"]; var connectionFactory = new ConnectionFactory { HostName = rabbitHost }; var messageSerializer = new MessageJsonSerializer(); services.AddScoped <AuditingDataContext>() .AddScoped <IEventSubscriber>(x => new EventBus(connectionFactory, messageSerializer, exchangeName, ExchangeType.Topic, queueName)) .AddScoped <IEventHandler>(x => new AccountAuthenticatedEventHandler(x.GetService <IRepositoryContext>())) .AddScoped <IEventConsumer>(x => { var handlers = x.GetServices <IEventHandler>(); return(new EventConsumer(x.GetService <IEventSubscriber>(), handlers, "wetext.*")); }) .AddApworks() .WithDataServiceSupport(new DataServiceConfigurationOptions(sp => new EntityFrameworkRepositoryContext(sp.GetService <AuditingDataContext>()))) .Configure(); //var eventSubscriber = new EventBus(connectionFactory, messageSerializer, exchangeName, ExchangeType.Topic, queueName); //var eventHandlers = new IEventHandler[] { new AccountAuthenticatedEventHandler(services.BuildServiceProvider().GetService<IRepositoryContext>()) }; //var eventConsumer = new EventConsumer(eventSubscriber, eventHandlers, "wetext.*"); //eventSubscriber.MessageReceived += (x, y) => // { // var message = y.Message; // }; //eventSubscriber.Subscribe("wetext.*"); // Resolve the event consumer var consumer = services.BuildServiceProvider().GetService <IEventConsumer>(); }
public override string ToString() { return(MessageJsonSerializer.SerializeMessage <ChatUsers>(this)); }
public override string ToString() { return(MessageJsonSerializer.SerializeMessage <NameSet>(this)); }
public override string ToString() { return(MessageJsonSerializer.SerializeMessage <UserNetworkEvent>(this)); }