Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
丁松杰
/
Pole
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
a7eba34a
authored
Mar 12, 2020
by
dingsongjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
注入 eventhandler
parent
888a195d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
16 additions
and
35 deletions
src/Pole.EventBus.Rabbitmq/Core/EventBusContainer.cs
src/Pole.EventBus.Rabbitmq/Core/IRabbitEventBusContainer.cs
src/Pole.EventBus.Rabbitmq/PoleRabbitmqStartupConfigExtensions.cs
src/Pole.EventBus/ObserverUnitContainer.cs
src/Pole.EventBus.Rabbitmq/Core/EventBusContainer.cs
View file @
a7eba34a
...
...
@@ -24,7 +24,6 @@ namespace Pole.EventBus.RabbitMQ
readonly
IServiceProvider
serviceProvider
;
private
readonly
IObserverUnitContainer
observerUnitContainer
;
private
readonly
RabbitOptions
rabbitOptions
;
public
bool
IsAutoRegisterFinished
{
get
;
private
set
;
}
public
EventBusContainer
(
IServiceProvider
serviceProvider
,
IObserverUnitContainer
observerUnitContainer
,
...
...
@@ -36,7 +35,7 @@ namespace Pole.EventBus.RabbitMQ
this
.
observerUnitContainer
=
observerUnitContainer
;
this
.
rabbitOptions
=
rabbitOptions
.
Value
;
}
public
async
Task
AutoRegister
()
public
async
Task
AutoRegister
(
IServiceCollection
services
)
{
var
eventList
=
new
List
<(
Type
type
,
EventInfoAttribute
config
)>();
var
evenHandlertList
=
new
List
<(
Type
type
,
EventInfoAttribute
config
)>();
...
...
@@ -57,7 +56,15 @@ namespace Pole.EventBus.RabbitMQ
await
eventBus
.
AddGrainConsumer
<
string
>();
}
}
IsAutoRegisterFinished
=
true
;
RegisterEventHandlers
(
services
,
evenHandlertList
);
}
private
void
RegisterEventHandlers
(
IServiceCollection
services
,
List
<(
Type
type
,
EventInfoAttribute
config
)>
evenHandlertList
)
{
foreach
(
var
eventHandler
in
evenHandlertList
)
{
services
.
AddScoped
(
eventHandler
.
type
);
}
}
public
RabbitEventBus
CreateEventBus
(
string
exchange
,
string
routePrefix
,
int
lBCount
=
1
,
bool
autoAck
=
false
,
bool
reenqueue
=
true
,
bool
persistent
=
true
)
...
...
@@ -123,22 +130,9 @@ namespace Pole.EventBus.RabbitMQ
foreach
(
var
assembly
in
AssemblyHelper
.
GetAssemblies
(
serviceProvider
.
GetService
<
ILogger
<
EventBusContainer
>>()))
{
foreach
(
var
type
in
assembly
.
GetTypes
().
Where
(
m
=>
typeof
(
IPoleEventHandler
).
IsAssignableFrom
(
m
)
&&
m
.
IsClass
&&
!
m
.
IsAbstract
&&
!
typeof
(
Orleans
.
Runtime
.
GrainReference
).
IsAssignableFrom
(
m
)))
{
var
eventType
=
type
.
GetGenericArguments
().
FirstOrDefault
();
//var eventHandlerInterface = type.GetInterfaces().FirstOrDefault(type => typeof(IPoleEventHandler).IsAssignableFrom(type) && !type.IsGenericType);
//var basePoleEventHandlerInterface = eventHandlerInterface.GetInterfaces().FirstOrDefault(m => m.IsGenericType);
//if (basePoleEventHandlerInterface == null)
//{
// throw new PoleEventHandlerImplementException("PoleEventHandler interface must Inherited from IPoleEventHandler<TEvent>");
//}
//var eventType = basePoleEventHandlerInterface.GetGenericArguments().FirstOrDefault();
//if (eventType == null)
//{
// throw new PoleEventHandlerImplementException("PoleEventHandler interface must Inherited from IPoleEventHandler<TEvent>");
//}
var
eventType
=
type
.
BaseType
.
GetGenericArguments
().
FirstOrDefault
();
var
attribute
=
eventType
.
GetCustomAttributes
(
typeof
(
EventInfoAttribute
),
false
).
FirstOrDefault
();
if
(
attribute
!=
null
)
...
...
@@ -150,7 +144,6 @@ namespace Pole.EventBus.RabbitMQ
throw
new
PoleEventHandlerImplementException
(
"Can not found EventHandlerAttribute in PoleEventHandler"
);
}
}
}
}
...
...
src/Pole.EventBus.Rabbitmq/Core/IRabbitEventBusContainer.cs
View file @
a7eba34a
using
System.Threading.Tasks
;
using
Microsoft.Extensions.DependencyInjection
;
using
System.Threading.Tasks
;
namespace
Pole.EventBus.RabbitMQ
{
public
interface
IRabbitEventBusContainer
:
IConsumerContainer
{
bool
IsAutoRegisterFinished
{
get
;
}
Task
AutoRegister
();
Task
AutoRegister
(
IServiceCollection
service
);
RabbitEventBus
CreateEventBus
(
string
exchange
,
string
routePrefix
,
int
lBCount
=
1
,
bool
autoAck
=
false
,
bool
reenqueue
=
false
,
bool
persistent
=
false
);
Task
Work
(
RabbitEventBus
bus
);
}
...
...
src/Pole.EventBus.Rabbitmq/PoleRabbitmqStartupConfigExtensions.cs
View file @
a7eba34a
...
...
@@ -31,7 +31,7 @@ namespace Microsoft.Extensions.DependencyInjection
if
(
eventBusConfig
!=
default
)
await
eventBusConfig
(
container
);
else
await
container
.
AutoRegister
();
await
container
.
AutoRegister
(
startupOption
.
Services
);
var
consumers
=
container
.
GetConsumers
();
foreach
(
var
consumer
in
consumers
)
...
...
src/Pole.EventBus/ObserverUnitContainer.cs
View file @
a7eba34a
...
...
@@ -22,19 +22,7 @@ namespace Pole.EventBus
{
foreach
(
var
type
in
assembly
.
GetTypes
().
Where
(
m
=>
typeof
(
IPoleEventHandler
).
IsAssignableFrom
(
m
)
&&
m
.
IsClass
&&
!
m
.
IsAbstract
&&
!
typeof
(
Orleans
.
Runtime
.
GrainReference
).
IsAssignableFrom
(
m
)))
{
var
eventType
=
type
.
GetGenericArguments
().
FirstOrDefault
();
//var eventHandlerInterface = type.GetInterfaces().FirstOrDefault(type => typeof(IPoleEventHandler).IsAssignableFrom(type) && !type.IsGenericType);
//var basePoleEventHandlerInterface= eventHandlerInterface.GetInterfaces().FirstOrDefault(m=>m.IsGenericType);
//if (basePoleEventHandlerInterface == null)
//{
// throw new PoleEventHandlerImplementException("PoleEventHandler interface must Inherited from IPoleEventHandler<TEvent>");
//}
//var eventType= basePoleEventHandlerInterface.GetGenericArguments().FirstOrDefault();
//if (eventType == null)
//{
// throw new PoleEventHandlerImplementException("PoleEventHandler interface must Inherited from IPoleEventHandler<TEvent>");
//}
var
eventType
=
type
.
BaseType
.
GetGenericArguments
().
FirstOrDefault
();
var
attribute
=
eventType
.
GetCustomAttributes
(
typeof
(
EventInfoAttribute
),
false
).
FirstOrDefault
();
if
(
attribute
!=
null
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment