Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
d5487de4
Commit
d5487de4
authored
Sep 19, 2017
by
yangxiaodong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add consul discovery.
parent
b415315e
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
185 additions
and
0 deletions
+185
-0
IDiscoveryProviderFactory.Default.cs
...re.CAP/NodeDiscovery/IDiscoveryProviderFactory.Default.cs
+19
-0
IDiscoveryProviderFactory.cs
...DotNetCore.CAP/NodeDiscovery/IDiscoveryProviderFactory.cs
+11
-0
INodeDiscoveryProvider.Consul.cs
...etCore.CAP/NodeDiscovery/INodeDiscoveryProvider.Consul.cs
+69
-0
INodeDiscoveryProvider.cs
src/DotNetCore.CAP/NodeDiscovery/INodeDiscoveryProvider.cs
+14
-0
IProcessingServer.Consul.cs
src/DotNetCore.CAP/NodeDiscovery/IProcessingServer.Consul.cs
+39
-0
Node.cs
src/DotNetCore.CAP/NodeDiscovery/Node.cs
+16
-0
ServerNodeConfiguration.cs
src/DotNetCore.CAP/NodeDiscovery/ServerNodeConfiguration.cs
+17
-0
No files found.
src/DotNetCore.CAP/NodeDiscovery/IDiscoveryProviderFactory.Default.cs
0 → 100644
View file @
d5487de4
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
{
class
DiscoveryProviderFactory
:
IDiscoveryProviderFactory
{
public
INodeDiscoveryProvider
Get
(
NodeConfiguration
configuration
)
{
if
(
configuration
==
null
)
{
return
null
;
}
return
new
ConsulNodeDiscoveryProvider
(
configuration
.
ServerHostName
,
configuration
.
ServerProt
);
}
}
}
src/DotNetCore.CAP/NodeDiscovery/IDiscoveryProviderFactory.cs
0 → 100644
View file @
d5487de4
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
{
interface
IDiscoveryProviderFactory
{
INodeDiscoveryProvider
Get
(
NodeConfiguration
configuration
);
}
}
src/DotNetCore.CAP/NodeDiscovery/INodeDiscoveryProvider.Consul.cs
0 → 100644
View file @
d5487de4
using
System
;
using
System.Linq
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Threading.Tasks
;
using
Consul
;
namespace
DotNetCore.CAP.NodeDiscovery
{
class
ConsulNodeDiscoveryProvider
:
INodeDiscoveryProvider
{
private
readonly
string
_hostName
;
private
readonly
int
_port
;
private
readonly
ConsulClient
_consul
;
public
ConsulNodeDiscoveryProvider
(
string
hostName
,
int
port
)
{
_hostName
=
hostName
;
_port
=
port
;
_consul
=
new
ConsulClient
(
config
=>
{
config
.
Address
=
new
Uri
(
$"http://
{
_hostName
}
:
{
_port
}
"
);
});
}
public
async
Task
<
IList
<
Node
>>
GetNodes
()
{
var
members
=
await
_consul
.
Agent
.
Members
(
false
);
var
nodes
=
members
.
Response
.
Select
(
x
=>
new
Node
{
Address
=
x
.
Addr
,
Name
=
x
.
Name
});
return
nodes
.
ToList
();
}
public
Task
RegisterNode
(
string
address
,
int
port
)
{
//CatalogRegistration registration = new CatalogRegistration();
//registration.Node = "CAP";
//registration.Address = "192.168.2.55";
//registration.Service = new AgentService
//{
// Port = 5000,
// Service = "CAP.Test.Service"
//};
//return _consul.Catalog.Register(registration);
return
_consul
.
Agent
.
ServiceRegister
(
new
AgentServiceRegistration
{
Name
=
"CAP"
,
Port
=
port
,
Address
=
address
,
Tags
=
new
string
[]
{
"CAP"
,
"Client"
,
"Dashboard"
},
Check
=
new
AgentServiceCheck
{
DeregisterCriticalServiceAfter
=
TimeSpan
.
FromSeconds
(
30
),
Interval
=
TimeSpan
.
FromSeconds
(
10
),
Status
=
HealthStatus
.
Passing
,
HTTP
=
"/CAP"
}
});
}
}
}
src/DotNetCore.CAP/NodeDiscovery/INodeDiscoveryProvider.cs
0 → 100644
View file @
d5487de4
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
DotNetCore.CAP.NodeDiscovery
{
interface
INodeDiscoveryProvider
{
Task
<
IList
<
Node
>>
GetNodes
();
Task
RegisterNode
(
string
address
,
int
port
);
}
}
src/DotNetCore.CAP/NodeDiscovery/IProcessingServer.Consul.cs
0 → 100644
View file @
d5487de4
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
{
class
ConsulProcessingNodeServer
:
IProcessingServer
{
private
readonly
DashboardOptions
dashboardOptions
;
private
readonly
IDiscoveryProviderFactory
discoveryProviderFactory
;
public
ConsulProcessingNodeServer
(
DashboardOptions
dashboardOptions
,
IDiscoveryProviderFactory
discoveryProviderFactory
)
{
this
.
dashboardOptions
=
dashboardOptions
;
this
.
discoveryProviderFactory
=
discoveryProviderFactory
;
}
public
void
Start
()
{
if
(
dashboardOptions
.
Discovery
!=
null
)
{
var
discoveryProvider
=
discoveryProviderFactory
.
Get
(
dashboardOptions
.
Discovery
);
discoveryProvider
.
RegisterNode
(
"192.168.2.55"
,
dashboardOptions
.
Discovery
.
CurrentPort
);
}
}
public
void
Pulse
()
{
}
public
void
Dispose
()
{
}
}
}
src/DotNetCore.CAP/NodeDiscovery/Node.cs
0 → 100644
View file @
d5487de4
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
{
class
Node
{
public
string
Name
{
get
;
set
;
}
public
string
Address
{
get
;
set
;
}
}
}
src/DotNetCore.CAP/NodeDiscovery/ServerNodeConfiguration.cs
0 → 100644
View file @
d5487de4
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
namespace
DotNetCore.CAP.NodeDiscovery
{
public
class
NodeConfiguration
{
public
string
ServerHostName
{
get
;
set
;
}
public
int
ServerProt
{
get
;
set
;
}
public
int
CurrentPort
{
get
;
set
;
}
public
string
PathMatch
{
get
;
set
;
}
=
"/cap"
;
}
}
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