hydra_dart

Last updated:

0 purchases

hydra_dart Image
hydra_dart Images
Add to Cart

Description:

hydra dart

HydraDart #
Hydra for Dartlang - A light-weight library for building distributed applications such as microservices.

Prior work #
Hydra for Dart is based on the Hydra approach to building microservices.
See related repos at: https://github.com/pnxtech
This implementation for Dart is especially based on HydraPy for Python.
Example #
In this example HydraDart uses Dart Shelf and Dart Self Router to allow a Dart service to be discoverable within a Docker Swarm or Kubernetes cluster.
import 'dart:io';
import 'dart:convert';
import 'package:shelf_router/shelf_router.dart';
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;
import './hydra.dart';

class API {
helloHandler(Request request) {
return Response.ok('hello-world');
}

userHandler(Request request, String user) {
return Response.ok('hello $user');
}
}

void main(List<String> args) async {
var hydra = Hydra();
var router = Router();
var api = API();

hydra.bindRouter(router);
hydra.addRoute('/v1/dart', 'get', api.helloHandler);
hydra.addRoute('/v1/dart/user/<user>', 'get', api.userHandler);

// Load configuration file
File configFile = File('./configs/dart-svcs-config.json');
Future<String> futureContent = configFile.readAsString();
futureContent.then((config) async {
Map<String, dynamic> configMap = jsonDecode(config);

// Use any available host or container IP (usually `0.0.0.0`).
final ip = InternetAddress.anyIPv4;

// Configure a pipeline that logs requests.
final routerHandler =
Pipeline().addMiddleware(logRequests()).addHandler(router);

// For running in containers, we respect the PORT environment variable.
final port = configMap['hydra']['servicePort'];

final server = await io.serve(routerHandler, ip, port);
print('Server listening on port ${server.port}');

hydra.init(configMap);
});
}
copied to clipboard
In the example above our server application loads a dart-svcs-config.json file and passes it along to the hydra.init() member function.
{
"hydra": {
"serviceName": "dart-svcs",
"serviceIP": "",
"servicePort": 7134,
"serviceType": "test",
"serviceDescription": "Dart experimental service",
"plugins": {
"hydraLogger": {
"logToConsole": true,
"onlyLogLocally": false
}
},
"redis": {
"urlxxx": "redis://redis:6379/15",
"host": "redis",
"port": 6379,
"db": 15
}
}
}
copied to clipboard

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.