diff --git a/Volo.Abp.sln b/Volo.Abp.sln
index 395adb5dab..2354e26105 100644
--- a/Volo.Abp.sln
+++ b/Volo.Abp.sln
@@ -168,7 +168,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Auditing.Tests", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MongoDB.Tests", "test\Volo.Abp.MongoDB.Tests\Volo.Abp.MongoDB.Tests.csproj", "{82ED4DD2-DEF8-40D5-9BF9-663AFD35B06D}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EntityFrameworkCore.SqlServer", "src\Volo.Abp.EntityFrameworkCore.SqlServer\Volo.Abp.EntityFrameworkCore.SqlServer.csproj", "{6EABA98D-0B71-4ED7-A939-AFDA106D1151}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.EntityFrameworkCore.SqlServer", "src\Volo.Abp.EntityFrameworkCore.SqlServer\Volo.Abp.EntityFrameworkCore.SqlServer.csproj", "{6EABA98D-0B71-4ED7-A939-AFDA106D1151}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EventBus.Distributed", "src\Volo.Abp.EventBus.Distributed\Volo.Abp.EventBus.Distributed.csproj", "{CFC98B88-8CCC-469B-8D60-482D3C94A690}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EventBus.Distributed.RabbitMQ", "src\Volo.Abp.EventBus.Distributed.RabbitMQ\Volo.Abp.EventBus.Distributed.RabbitMQ.csproj", "{468C3DCB-8C00-40E7-AE51-0738EAAB312A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.EventBus.Distributed.Tests", "test\Volo.Abp.EventBus.Distributed.Tests\Volo.Abp.EventBus.Distributed.Tests.csproj", "{0AE814CE-E155-4259-8746-262D174AB510}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -472,6 +478,18 @@ Global
{6EABA98D-0B71-4ED7-A939-AFDA106D1151}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6EABA98D-0B71-4ED7-A939-AFDA106D1151}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6EABA98D-0B71-4ED7-A939-AFDA106D1151}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CFC98B88-8CCC-469B-8D60-482D3C94A690}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CFC98B88-8CCC-469B-8D60-482D3C94A690}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CFC98B88-8CCC-469B-8D60-482D3C94A690}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CFC98B88-8CCC-469B-8D60-482D3C94A690}.Release|Any CPU.Build.0 = Release|Any CPU
+ {468C3DCB-8C00-40E7-AE51-0738EAAB312A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {468C3DCB-8C00-40E7-AE51-0738EAAB312A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {468C3DCB-8C00-40E7-AE51-0738EAAB312A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {468C3DCB-8C00-40E7-AE51-0738EAAB312A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0AE814CE-E155-4259-8746-262D174AB510}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0AE814CE-E155-4259-8746-262D174AB510}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0AE814CE-E155-4259-8746-262D174AB510}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0AE814CE-E155-4259-8746-262D174AB510}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -553,6 +571,9 @@ Global
{D5733D90-8C3D-4026-85E2-41DED26C4938} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{82ED4DD2-DEF8-40D5-9BF9-663AFD35B06D} = {447C8A77-E5F0-4538-8687-7383196D04EA}
{6EABA98D-0B71-4ED7-A939-AFDA106D1151} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
+ {CFC98B88-8CCC-469B-8D60-482D3C94A690} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
+ {468C3DCB-8C00-40E7-AE51-0738EAAB312A} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6}
+ {0AE814CE-E155-4259-8746-262D174AB510} = {447C8A77-E5F0-4538-8687-7383196D04EA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}
diff --git a/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo.Abp.EventBus.Distributed.RabbitMQ.csproj b/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo.Abp.EventBus.Distributed.RabbitMQ.csproj
new file mode 100644
index 0000000000..05c0ab151a
--- /dev/null
+++ b/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo.Abp.EventBus.Distributed.RabbitMQ.csproj
@@ -0,0 +1,20 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Abp.EventBus.Distributed.RabbitMQ
+ Volo.Abp.EventBus.Distributed.RabbitMQ
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ false
+ false
+ false
+
+
+
+
+
+
+
+
diff --git a/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo/Abp/EventBus/Distributed/RabbitMq/AbpRabbitMqDistributedEventBusModule.cs b/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo/Abp/EventBus/Distributed/RabbitMq/AbpRabbitMqDistributedEventBusModule.cs
new file mode 100644
index 0000000000..753438a5b0
--- /dev/null
+++ b/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo/Abp/EventBus/Distributed/RabbitMq/AbpRabbitMqDistributedEventBusModule.cs
@@ -0,0 +1,14 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.EventBus.Distributed.RabbitMq
+{
+ [DependsOn(typeof(AbpDistributedEventBusModule))]
+ public class AbpRabbitMqDistributedEventBusModule : AbpModule
+ {
+ public override void ConfigureServices(IServiceCollection services)
+ {
+ services.AddAssemblyOf();
+ }
+ }
+}
diff --git a/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo/Abp/EventBus/Distributed/RabbitMq/RabbitMqDistributedEventBus.cs b/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo/Abp/EventBus/Distributed/RabbitMq/RabbitMqDistributedEventBus.cs
new file mode 100644
index 0000000000..68131b3ab8
--- /dev/null
+++ b/src/Volo.Abp.EventBus.Distributed.RabbitMQ/Volo/Abp/EventBus/Distributed/RabbitMq/RabbitMqDistributedEventBus.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.EventBus.Distributed.RabbitMq
+{
+ public class RabbitMqDistributedEventBus : IDistributedEventBus, ITransientDependency
+ {
+ public Task PublishAsync(TEvent eventData)
+ where TEvent : class
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task PublishAsync(Type eventType, object eventData)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.EventBus.Distributed/Volo.Abp.EventBus.Distributed.csproj b/src/Volo.Abp.EventBus.Distributed/Volo.Abp.EventBus.Distributed.csproj
new file mode 100644
index 0000000000..5ad5d3eb57
--- /dev/null
+++ b/src/Volo.Abp.EventBus.Distributed/Volo.Abp.EventBus.Distributed.csproj
@@ -0,0 +1,20 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Abp.EventBus.Distributed
+ Volo.Abp.EventBus.Distributed
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ false
+ false
+ false
+
+
+
+
+
+
+
+
diff --git a/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/AbpDistributedEventBusModule.cs b/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/AbpDistributedEventBusModule.cs
new file mode 100644
index 0000000000..0494913d12
--- /dev/null
+++ b/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/AbpDistributedEventBusModule.cs
@@ -0,0 +1,14 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.EventBus.Distributed
+{
+ [DependsOn(typeof(AbpEventBusModule))]
+ public class AbpDistributedEventBusModule : AbpModule
+ {
+ public override void ConfigureServices(IServiceCollection services)
+ {
+ services.AddAssemblyOf();
+ }
+ }
+}
diff --git a/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/IDistributedEventBus.cs b/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/IDistributedEventBus.cs
new file mode 100644
index 0000000000..49f50b24c5
--- /dev/null
+++ b/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/IDistributedEventBus.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Threading.Tasks;
+
+namespace Volo.Abp.EventBus.Distributed
+{
+ public interface IDistributedEventBus
+ {
+ Task PublishAsync(TEvent eventData)
+ where TEvent : class;
+
+ Task PublishAsync(Type eventType, object eventData);
+ }
+}
diff --git a/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/LocalDistributedEventBus.cs b/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/LocalDistributedEventBus.cs
new file mode 100644
index 0000000000..58b6aa20e2
--- /dev/null
+++ b/src/Volo.Abp.EventBus.Distributed/Volo/Abp/EventBus/Distributed/LocalDistributedEventBus.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.EventBus.Distributed
+{
+ public class LocalDistributedEventBus : IDistributedEventBus, ITransientDependency
+ {
+ private readonly IEventBus _eventBus;
+
+ public LocalDistributedEventBus(IEventBus eventBus)
+ {
+ _eventBus = eventBus;
+ }
+
+ public Task PublishAsync(TEvent eventData)
+ where TEvent : class
+ {
+ return _eventBus.TriggerAsync(eventData);
+ }
+
+ public Task PublishAsync(Type eventType, object eventData)
+ {
+ return _eventBus.TriggerAsync(eventType, eventData);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IDistributedEventBus.cs b/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IDistributedEventBus.cs
deleted file mode 100644
index 4b81b1ee4a..0000000000
--- a/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IDistributedEventBus.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Volo.Abp.EventBus
-{
- public interface IDistributedEventBus
- {
-
- }
-}
diff --git a/test/Volo.Abp.EventBus.Distributed.Tests/Volo.Abp.EventBus.Distributed.Tests.csproj b/test/Volo.Abp.EventBus.Distributed.Tests/Volo.Abp.EventBus.Distributed.Tests.csproj
new file mode 100644
index 0000000000..c97c0b6be0
--- /dev/null
+++ b/test/Volo.Abp.EventBus.Distributed.Tests/Volo.Abp.EventBus.Distributed.Tests.csproj
@@ -0,0 +1,24 @@
+
+
+
+ netcoreapp2.0
+ latest
+ Volo.Abp.EventBus.Distributed.Tests
+ Volo.Abp.EventBus.Distributed.Tests
+ true
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+