# About Internal Services
The ServiceBroker
contains some internal Services
to check the node health or get some registry information.
These services can be disabled by setting "internalServices" parameter to "false" in
ServiceBrokerConfig:
ServiceBrokerConfig cfg = new ServiceBrokerConfig();
cfg.setInternalServices(false); // Disable Internal Services
ServiceBroker broker = new ServiceBroker(cfg);
# List of nodes
The "$node.list" Action
lists all known nodes (including local node).
broker.call("$node.list").then(rsp -> {
// Print JSON response
logger.info(rsp);
// Example processing of the response (print IPs of nodes):
for (Tree nodeInfo: rsp) {
logger.info("Node ID: " + nodeInfo.get("id", ""));
for (Tree ip: nodeInfo.get("ipList")) {
logger.info(" IP address: " + ip.asString());
}
}
});
Sample response
[
{
"id":"node1",
"available":true,
"lastHeartbeatTime":1579023883101,
"cpu":8,
"port":0,
"hostname":"tsmith-pc",
"ipList":[
"192.168.12.13",
"fe80:0:0:0:0:6efe:c0a8:3348%net4",
...
],
"client":{
"type":"java",
"version":"1.2.5",
"langVersion":"1.8.0_162-ea"
}
}
]
Node ID: node1
IP address: 192.168.12.13
IP address: fe80:0:0:0:0:6efe:c0a8:3348%net4
IP address: fe80:0:0:0:0:110:7f:fffe%net5
IP address: fe80:0:0:0:4514:d05f:4195:80d8%eth5
IP address: fe80:0:0:0:9802:43e:ce67:4c25%eth6
Parameters
Name | Type | Default | Description |
---|---|---|---|
withServices | Boolean | false | List with services. |
# List of Services
The "$node.services" Action
lists all registered Services
(local & remote).
broker.call("$node.services").then(rsp -> {
// Print JSON response
logger.info(rsp);
// Example processing of the response (print nodeIDs of Services):
for (Tree serviceInfo: rsp) {
logger.info("Service: " + serviceInfo.get("name", ""));
for (Tree nodeID: serviceInfo.get("nodes")) {
logger.info(" Node ID: " + nodeID.asString());
}
}
});
Sample response
[
{
"name":"api-gw",
"nodes":[
"tsmith-pc-7700"
],
"settings":null,
"metadata":null
},
{
"name":"chatService",
"nodes":[
"tsmith-pc-7700"
],
"settings":null,
"metadata":null
},
{
"name":"upload",
"nodes":[
"tsmith-pc-7700"
],
"settings":null,
"metadata":null
}
]
Service: api-gw
Node ID: tsmith-pc-7700
Service: chatService
Node ID: tsmith-pc-7700
Service: upload
Node ID: tsmith-pc-7700
Parameters
Name | Type | Default | Description |
---|---|---|---|
onlyLocal | Boolean | false | List only local services. |
skipInternal | Boolean | false | Skip the internal services ("$node"). |
withActions | Boolean | false | List with actions. |
# List of Actions
The "$node.actions" Action
lists all registered Actions
(local & remote).
broker.call("$node.actions").then(rsp -> {
// Print JSON response
logger.info(rsp);
// Example processing of the response (print Actions and some attributes):
for (Tree actionInfo: rsp) {
logger.info("Action: " + actionInfo.get("name", "") +
", local: " + actionInfo.get("hasLocal", false) +
", count: " + actionInfo.get("count", 0));
}
});
Sample response
[
{
"name":"$node.actions",
"count":1,
"hasLocal":true,
"available":true,
"action":{
"name":"$node.actions"
}
},
{
"name":"blog.clear",
"count":1,
"hasLocal":true,
"available":true,
"action":{
"name":"blog.clear"
}
},
{
"name":"jmx.findObjects",
"count":1,
"hasLocal":true,
"available":true,
"action":{
"name":"jmx.findObjects"
}
}
]
Action: $node.actions, local: true, count: 1
Action: blog.clear, local: true, count: 1
Action: jmx.findObjects, local: true, count: 1
Options
Name | Type | Default | Description |
---|---|---|---|
onlyLocal | Boolean | false | List only local actions. |
skipInternal | Boolean | false | Skip the internal actions ("$node"). |
withEndpoints | Boolean | false | List with endpoints (nodes). |
# List of event subscriptions
The "$node.events" Action
lists all event subscriptions.
broker.call("$node.events").then(rsp -> {
// Print JSON response
logger.info(rsp);
// Example processing of the response (print Events and some attributes):
for (Tree eventInfo: rsp) {
String subscription = eventInfo.get("name", "");
logger.info("Subscription: " + subscription);
for (Tree event: eventInfo.get("event")) {
logger.info(" " + event.getName() + " = " + event.asString());
}
}
});
Sample response
[
{
"name":"$services.changed",
"group":"nettyServer",
"count":1,
"hasLocal":true,
"available":true,
"event":{
"name":"$services.changed",
"group":"nettyServer"
}
},
{
"name":"websocket.send",
"group":"api-gw",
"count":1,
"hasLocal":true,
"available":true,
"event":{
"name":"websocket.send",
"group":"api-gw"
}
}
]
Subscription: $services.changed
name = $services.changed
group = nettyServer
Subscription: websocket.send
name = websocket.send
group = api-gw
Options
Name | Type | Default | Description |
---|---|---|---|
onlyLocal | Boolean | false | List only local subscriptions. |
skipInternal | Boolean | false | Skip the internal event subscriptions "$". |
withEndpoints | Boolean | false | List with endpoints (nodes). |
# Health of node
The "$node.health" Action
returns the health info of local node (including process & OS information).
broker.call("$node.health").then(rsp -> {
// Print JSON response
logger.info(rsp);
// Example processing of the response (print IPs and some attributes):
logger.info("IP Addresses:");
for (Tree ip: rsp.get("net.ip")) {
logger.info(" " + ip.asString());
}
logger.info("CPU cores: " + rsp.get("cpu.cores", 0));
logger.info("OS type: " + rsp.get("os.type", ""));
logger.info("Homedir: " + rsp.get("os.user.homedir", ""));
});
Sample response
{
"cpu":{
"cores":8,
"utilization":16
},
"os":{
"type":"Windows 10",
"release":"1.2",
"hostname":"tsmith-pc",
"arch":"amd64",
"user":{
"username":"Tom Smith",
"homedir":"C:\\Users\\TSmith",
"shell":""
}
},
"process":{
"pid":7700,
"memory":{
"heapTotal":189792256,
"heapUsed":57524232
},
"uptime":6021
},
"client":{
"type":"java",
"version":"1.2.5",
"langVersion":"1.8.0_162-ea"
},
"net":{
"ip":[
"192.168.12.13"
]
},
"time":{
"now":1579023307986,
"iso":"2020-01-14T17:35:07.986Z",
"utc":"Tue, 14 Jan 2020 17:35:07 GMT"
}
}
IP Addresses:
192.168.12.13
CPU cores: 8
OS type: Windows 10
Homedir: C:\Users\TSmith