/
ConductR.html
167 lines (147 loc) · 25.8 KB
/
ConductR.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<!DOCTYPE html>
<html lang="en">
<head>
<title>Lightbend - Lagom - Documentation</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="Documentation for Lagom"/>
<link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic,700italic" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="webjars/lagom-docs-theme/stylesheets/normalize.css"/>
<link rel="stylesheet" href="webjars/lagom-docs-theme/stylesheets/foundation.min.css"/>
<link rel="stylesheet" href="webjars/lagom-docs-theme/stylesheets/main.min.css"/>
<script type="text/javascript" src="webjars/lagom-docs-theme/javascripts/vendor/modernizr.min.js"></script>
<link rel="shortcut icon" href="webjars/lagom-docs-theme/favicon.ico" />
</head>
<body>
<div class="off-canvas-wrap">
<div class="inner-wrap">
<nav class="tab-bar">
<section class="left-small">
<a class="left-off-canvas-toggle menu-icon" ><span></span></a>
</section>
<section class="right tab-bar-section">
<h1 class="title"><a href="Home.html"> Lagom Documentation</a></h1>
<span class="logo">
<svg class="svg-icon svg-logom-logo-reverse" id="Lagom_Reverse" data-name="Lagom Reverse" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 752 192"><title>logom</title><g id="Lagom"><path d="M291.58,31.79h19.83v87.91c0,8.1,2.64,11.57,9.91,11.57a21.11,21.11,0,0,0,5.95-.66V148.3a35.63,35.63,0,0,1-9.42,1c-17.52,0-26.28-8.92-26.28-26.94V31.79Z" fill="#fff"/><path d="M398.34,75.75V63.69h19.83v58.17c0,7.11,1.65,9.75,6.11,9.75a41.28,41.28,0,0,0,4.13-.33v16a28.65,28.65,0,0,1-9.75,1.32c-4.79,0-8.59-.83-11.57-2.64a15.33,15.33,0,0,1-6.78-10.08C394.53,144.66,385,149,371.73,149A39.58,39.58,0,0,1,342,136.4c-7.93-8.43-11.9-18.67-11.9-31.07s4-22.64,11.9-30.9a39.58,39.58,0,0,1,29.75-12.56C385.12,61.87,395.2,67.82,398.34,75.75Zm-5.95,47.76a24.29,24.29,0,0,0,7.44-18.18,24.29,24.29,0,0,0-7.44-18.18,24.68,24.68,0,0,0-18-7.27,23.93,23.93,0,0,0-17.68,7.27c-4.63,4.79-6.94,10.91-6.94,18.18s2.31,13.39,6.94,18.18a23.93,23.93,0,0,0,17.68,7.27A24.68,24.68,0,0,0,392.39,123.51Z" fill="#fff"/><path d="M495.67,63.69H515.5v69.41c0,20-2.81,32.23-14,41-7.93,6.11-17.68,9.25-29.42,9.25-15.53,0-28.92-4-40.32-12.06l9.59-14.71a50.47,50.47,0,0,0,28.59,9.09q11.65,0,18.34-5c5.29-3.8,7.93-10.91,7.93-21.15v-4.13c-4,7.11-13.88,12.23-27.1,12.23a40.53,40.53,0,0,1-29.75-12.23c-7.93-8.1-11.9-18.34-11.9-30.41s4-22.31,12.06-30.57a39.23,39.23,0,0,1,29.58-12.56c13.72,0,23.8,5.78,26.61,13.88V63.69ZM489.72,123a24.19,24.19,0,0,0,7.44-18,23.82,23.82,0,0,0-7.44-17.85,24.68,24.68,0,0,0-18-7.27A23.93,23.93,0,0,0,454,87.15,24.69,24.69,0,0,0,447.09,105,25.08,25.08,0,0,0,454,123a23.79,23.79,0,0,0,17.68,7.11C478.81,130.12,484.93,127.81,489.72,123Z" fill="#fff"/><path d="M522.44,105.33a42.05,42.05,0,0,1,13.22-31.4c8.76-8.43,19.5-12.72,32.22-12.72s23.47,4.3,32.23,12.72a42.05,42.05,0,0,1,13.22,31.4,42.05,42.05,0,0,1-13.22,31.4c-8.76,8.43-19.5,12.72-32.23,12.72s-23.47-4.3-32.22-12.72A42.05,42.05,0,0,1,522.44,105.33ZM586.23,124a25.67,25.67,0,0,0,7.44-18.67,25,25,0,0,0-7.44-18.51,26.13,26.13,0,0,0-36.85,0,25.56,25.56,0,0,0-7.27,18.51A26.22,26.22,0,0,0,549.38,124,26.54,26.54,0,0,0,586.23,124Z" fill="#fff"/><path d="M620.6,147V63.69h19.67v11.9C643.74,67.49,652,62,662.58,62,674,62,681.91,66.83,686,76.58,690.84,66.83,699.76,62,712.81,62c18,0,28.42,12.72,28.42,33.38v26.28c0,6.44,1.16,8.76,5.62,8.76a14.56,14.56,0,0,0,2.81-.33v16.69a28.37,28.37,0,0,1-8.59,1c-13.05,0-19.5-7.27-19.5-21.81V98.23c0-11.4-5.29-18.51-14.54-18.51s-16,8.1-16,19.33V147H671.34V98.23c0-11.4-5.45-18.51-14.87-18.51-9.25,0-16.2,8.1-16.2,19.33V147H620.6Z" fill="#fff"/></g><g id="Icon"><g opacity="0.8"><path d="M261,84l-70,34,70,34S260.78,84.27,261,84Z" fill="#fff"/></g><g opacity="0.8"><polygon points="121 152 191 118 121 84 121 152" fill="#fff"/></g><path d="M191,118l70,34c-0.27,0-41.76,25-60.63,36.24a17.64,17.64,0,0,1-18,0C163.47,177,121,152,121,152Z" fill="#fff" opacity="0.6"/><path d="M200.23,47.65C219.09,58.88,261,84,261,84l-70,34L121,84c0.27,0,42.31-25.12,61.18-36.36A17.64,17.64,0,0,1,200.23,47.65Z" fill="#fff"/><g opacity="0.8"><path d="M145,20.58l-35,17,35,17S144.89,20.72,145,20.58Z" fill="#fff"/></g><g opacity="0.8"><polygon points="75 54.58 110 37.58 75 20.58 75 54.58" fill="#fff"/></g><path d="M110,37.58l35,17c-0.14,0-20.88,12.5-30.31,18.12a8.82,8.82,0,0,1-9,0C96.23,67.08,75,54.58,75,54.58Z" fill="#fff" opacity="0.6"/><path d="M114.61,2.4C124,8,145,20.58,145,20.58l-35,17-35-17C75.14,20.59,96.16,8,105.59,2.4A8.82,8.82,0,0,1,114.61,2.4Z" fill="#fff"/><g opacity="0.8"><path d="M101,91L51,115.54l50,24.53S100.84,91.21,101,91Z" fill="#fff"/></g><g opacity="0.8"><polygon points="1 140.07 51 115.54 1 91.02 1 140.07" fill="#fff"/></g><path d="M51,115.54l50,24.53c-0.19,0-29.83,18-43.3,26.14a12.5,12.5,0,0,1-12.89,0C31.34,158.1,1,140.07,1,140.07Z" fill="#fff" opacity="0.6"/><path d="M57.59,64.79C71.06,72.9,101,91,101,91L51,115.54,1,91C1.19,91,31.22,72.9,44.7,64.79A12.5,12.5,0,0,1,57.59,64.79Z" fill="#fff"/></g></svg>
</span>
</section>
</nav>
<aside class="left-off-canvas-menu">
<ul class="off-canvas-list">
<li><label>API docs</label></li>
<li><a href="api/java/index.html">Java</a></li>
<li><label>Running Lagom in production</label></li>
<li><a href="Overview.html">Overview</a></li>
<li><a href="ConductR.html">Lightbend ConductR</a></li>
<li><a href="ReactivePlatform.html">ReactivePlatform</a></li>
<li><label>Lagom reference guide</label></li>
<li><a href="ReferenceGuide.html">Reference Guide</a></li>
<li><a href="LagomBuild.html">Defining a Lagom build</a></li>
<li><a href="DevEnvironment.html">Running Lagom in development</a></li>
<li><a href="ServiceDescriptors.html">Writing Lagom services</a></li>
<li><a href="PersistentEntity.html">Writing persistent and clustered services</a></li>
<li><a href="Overview.html">Running Lagom in production</a></li>
<li><a href="Logging.html">Logging</a></li>
<li><a href="Akka.html">Advanced topics</a></li>
<li><label>Home.html</label></li>
<li><a href="Home.html">Home</a></li>
<li><a href="WhatIsLagom.html">Welcome to Lagom</a></li>
<li><a href="CoreConcepts.html">Lagom core concepts</a></li>
<li><a href="Installation.html">Getting started with Lagom</a></li>
<li><a href="ReferenceGuide.html">Lagom reference guide</a></li>
<li><a href="ImmutablesInIDEs.html">Appendix</a></li>
</ul>
</aside>
<div class="row">
<div class="small-12 large-10 large-centered columns">
<article id="page-content">
<h1 id="Lightbend-ConductR"><a class="section-marker" href="#Lightbend-ConductR">§</a>Lightbend ConductR</h1><p>ConductR is a container orchestration tool with the main goal of delivering operational productivity. ConductR is also designed to host your Lagom services with resilience.</p><p>ConductR is free for development usage and there is a “sandbox” so that you can run ConductR locally and test your services. Please visit <a href="http://lightbend.com/products/conductr">ConductR’s product page</a> in order to download the sandbox, and also for more information on ConductR in general. If you’d like to know more about our commercial license then <a href="https://www.lightbend.com/company/contact">please contact us</a>. The remainder of this guide will discuss the specific integration points between Lagom and ConductR.</p><h2 id="Packaging-your-services"><a class="section-marker" href="#Packaging-your-services">§</a>Packaging your services</h2><p>We have integrated the experience of packaging your Lagom services so that you can deliver them to ConductR with ease. By adding the <a href="https://github.com/typesafehub/sbt-lagom-bundle#lagom-bundle-plugin">sbt-lagom-bundle plugin</a> you are able to package Lagom services for ConductR. In your project’s <code>plugins.sbt</code>:</p>
<pre class="prettyprint"><code class="language-scala">addSbtPlugin("com.typesafe.sbt" % "sbt-lagom-bundle" % "1.0.0")
</code></pre><p>You can then package the <code>helloworld</code> service from within the activator console (we <code>reload</code> so that activator recognises the new plugin):</p>
<pre class="prettyprint"><code class="language-console">> reload
> bundle:dist
...
[info] Bundle has been created: .../helloworld/helloworld-impl/target/bundle/helloworldimpl-v1-06f3e5872f48d69ee339b0a4b7ae382871b69de1cfc1ab831b0a18064d096733.zip
[success] Total time: 4 s, completed 05/03/2016 2:43:07 PM
</code></pre><p>The above creates what is known as a “bundle”. A bundle is the unit of deployment with ConductR, and its filename is fingerprinted with a hash value representing the contents of the entire zip file. ConductR does this so that you can be assured that this particular bundle will always be what you knew it to be when it was generated. If its contents change then its filename will also change. ConductR also verifies that the hash provided matches the actual contents at the point that you load it. When managing your Lagom services you can therefore roll releases forward and backward with surety.</p><h2 id="Loading-and-running-your-services-during-development"><a class="section-marker" href="#Loading-and-running-your-services-during-development">§</a>Loading and running your services during development</h2><p>From a development perspective ConductR provides a “sandbox” environment where you can start it and then test your bundle long before it goes to production. ConductR’s sandbox also permits you to <a href="https://github.com/typesafehub/sbt-conductr-sandbox#debugging-application-in-conductr-sandbox">debug Lagom services</a> from your IDE when running within its cluster.</p><p>You can access ConductR’s sandbox from within the activator console once the following plugin is added to your <code>project/plugins.sbt</code>:</p>
<pre class="prettyprint"><code class="language-scala">addSbtPlugin("com.typesafe.conductr" % "sbt-conductr-sandbox" % "1.3.0")
</code></pre><p>To start the sandbox from within the console (supposing the version of ConductR is <code>1.1.2</code> - you should <a href="https://www.lightbend.com/product/conductr/developer">check to ensure that you are using a recent version</a>):</p>
<pre class="prettyprint"><code class="language-console">> reload
> set SandboxKeys.imageVersion in Global := "1.1.2"
> sandbox run
</code></pre><p>With the sandbox running you can now load the bundle that you previously generated. Supposing that you’re wanting to load the “Helloworld” sample:</p>
<pre class="prettyprint"><code class="language-console">> helloworldImpl/conduct load <press the tab key here>
</code></pre><p>Note how you’re loading the implementation of your service.</p><p>Finally, to run it:</p>
<pre class="prettyprint"><code class="language-console">> conduct run helloworldimpl
</code></pre><p>You should now have a running Lagom service. You can also <code>conduct stop</code> and <code>conduct unload</code> Lagom services with the sandbox. The <code>conduct</code> command therefore allows you to manage the full lifecycle of a bundle. In addition you can use <code>conduct logs</code> to view the consolidated logging of bundles throughout the cluster - this is particularly useful during development.</p><h2 id="Loading-and-running-your-services-outside-of-development"><a class="section-marker" href="#Loading-and-running-your-services-outside-of-development">§</a>Loading and running your services outside of development</h2><p>The sandbox is useful to validate that the packaging of your service is correct. However at some point you will want to load and run your bundle on a real ConductR cluster. While it is beyond the scope of this document to describe how to set up such a cluster (please refer to the <a href="https://conductr.lightbend.com/docs/1.1.x/Install">ConductR installation guide</a> for that), you generally interact with a real cluster through <a href="https://github.com/typesafehub/conductr-cli#command-line-interface-cli-for-typesafe-conductr">the ConductR CLI</a>. You will have already downloaded the CLI as part of the sandbox. The CLI commands are very similar to their activator console counterparts. Type <code>conduct --help</code> outside of the sbt console for more information on what commands are available.</p><h2 id="Running-Cassandra"><a class="section-marker" href="#Running-Cassandra">§</a>Running Cassandra</h2><p>If your Lagom service uses Cassandra for persistence then you can generate what is known as a “bundle configuration” for Cassandra. To do this, from a terminal window:</p>
<pre class="prettyprint"><code class="language-console">> activator cassandra-configuration:dist
...
[info] Bundle has been created: .../chirper/target/configuration-bundle/cassandra-configuration-06f3e5872f48d69ee339b0a4b7ae382871b69de1cfc1ab831b0a18064d096733.zip
[success] Total time: 4 s, completed 05/03/2016 2:43:07 PM
</code></pre><p>You can then load both Cassandra and the configuration for your project into ConductR:</p>
<pre class="prettyprint"><code class="language-console">> conduct load cassandra .../chirper/target/configuration-bundle/cassandra-configuration-06f3e5872f48d69ee339b0a4b7ae382871b69de1cfc1ab831b0a18064d096733.zip
</code></pre><p>Upon loading you then run cassandra at the scale that you require. For convenience we recommend that you start with one Cassandra cluster per root sbt project, which of course can contain many Lagom projects (and therefore services). Bounded contexts are always maintained via separate key-spaces, and so having one Cassandra cluster is viable for supporting many microservices. The actual number of Cassandra clusters required will be the <em>Lagom amount</em> i.e. “just the right amount” for your system. For more information on configuring Cassandra for ConductR please visit <a href="https://github.com/typesafehub/conductr-cassandra#conductr-cassandra">the bundle’s website</a>.</p><h2 id="For-more-information"><a class="section-marker" href="#For-more-information">§</a>For more information</h2><p>For more information on ConductR please visit its <a href="https://conductr.lightbend.com/">documentation site</a>.</p>
<footer>
<nav>
<a href="ReactivePlatform.html"><strong>Next: </strong> ReactivePlatform</a>
</nav>
</footer>
</article>
</div>
</div>
<footer class="site-footer">
<div class="row">
<div class="small-12 large-10 large-centered columns">
<div class="row">
<div class="small-12 large-7 columns">
<div class="support-item">
<div class="support-icon">
<svg id="lightbend-icon-reverse" class="svg-icon svg-icon-lightbend-reverse" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 302 262">
<title>lightbend-icon</title>
<g id="icon">
<path d="M1,195v56a10,10,0,0,0,10,10H291a10,10,0,0,0,10-10V195a557.85,557.85,0,0,1-150,20A557.85,557.85,0,0,1,1,195Z" style="fill:#fff" />
<path d="M291,1H11A10,10,0,0,0,1,11V176a539.94,539.94,0,0,0,150,21,539.94,539.94,0,0,0,150-21V11A10,10,0,0,0,291,1Z" style="fill:#fff" />
</g>
</svg>
</div>
<div class="support-detail">
<h2>Commercial Support</h2>
<a href="https://www.lightbend.com/services/expert-support">Lightbend Subscription</a> |
<a href="https://www.lightbend.com/services/training">Training</a> |
<a href="https://www.lightbend.com/services/consulting">Consulting</a>
</div>
</div>
</div>
<div class="small-12 large-5 columns large-text-right">
<div class="footer-logos">
<a class="footer-logo lagom" href="Home.html">
<svg class="svg-icon svg-logom-logo-reverse" id="Lagom_Reverse" data-name="Lagom Reverse" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 752 192"><title>logom</title><g id="Lagom"><path d="M291.58,31.79h19.83v87.91c0,8.1,2.64,11.57,9.91,11.57a21.11,21.11,0,0,0,5.95-.66V148.3a35.63,35.63,0,0,1-9.42,1c-17.52,0-26.28-8.92-26.28-26.94V31.79Z" fill="#fff"/><path d="M398.34,75.75V63.69h19.83v58.17c0,7.11,1.65,9.75,6.11,9.75a41.28,41.28,0,0,0,4.13-.33v16a28.65,28.65,0,0,1-9.75,1.32c-4.79,0-8.59-.83-11.57-2.64a15.33,15.33,0,0,1-6.78-10.08C394.53,144.66,385,149,371.73,149A39.58,39.58,0,0,1,342,136.4c-7.93-8.43-11.9-18.67-11.9-31.07s4-22.64,11.9-30.9a39.58,39.58,0,0,1,29.75-12.56C385.12,61.87,395.2,67.82,398.34,75.75Zm-5.95,47.76a24.29,24.29,0,0,0,7.44-18.18,24.29,24.29,0,0,0-7.44-18.18,24.68,24.68,0,0,0-18-7.27,23.93,23.93,0,0,0-17.68,7.27c-4.63,4.79-6.94,10.91-6.94,18.18s2.31,13.39,6.94,18.18a23.93,23.93,0,0,0,17.68,7.27A24.68,24.68,0,0,0,392.39,123.51Z" fill="#fff"/><path d="M495.67,63.69H515.5v69.41c0,20-2.81,32.23-14,41-7.93,6.11-17.68,9.25-29.42,9.25-15.53,0-28.92-4-40.32-12.06l9.59-14.71a50.47,50.47,0,0,0,28.59,9.09q11.65,0,18.34-5c5.29-3.8,7.93-10.91,7.93-21.15v-4.13c-4,7.11-13.88,12.23-27.1,12.23a40.53,40.53,0,0,1-29.75-12.23c-7.93-8.1-11.9-18.34-11.9-30.41s4-22.31,12.06-30.57a39.23,39.23,0,0,1,29.58-12.56c13.72,0,23.8,5.78,26.61,13.88V63.69ZM489.72,123a24.19,24.19,0,0,0,7.44-18,23.82,23.82,0,0,0-7.44-17.85,24.68,24.68,0,0,0-18-7.27A23.93,23.93,0,0,0,454,87.15,24.69,24.69,0,0,0,447.09,105,25.08,25.08,0,0,0,454,123a23.79,23.79,0,0,0,17.68,7.11C478.81,130.12,484.93,127.81,489.72,123Z" fill="#fff"/><path d="M522.44,105.33a42.05,42.05,0,0,1,13.22-31.4c8.76-8.43,19.5-12.72,32.22-12.72s23.47,4.3,32.23,12.72a42.05,42.05,0,0,1,13.22,31.4,42.05,42.05,0,0,1-13.22,31.4c-8.76,8.43-19.5,12.72-32.23,12.72s-23.47-4.3-32.22-12.72A42.05,42.05,0,0,1,522.44,105.33ZM586.23,124a25.67,25.67,0,0,0,7.44-18.67,25,25,0,0,0-7.44-18.51,26.13,26.13,0,0,0-36.85,0,25.56,25.56,0,0,0-7.27,18.51A26.22,26.22,0,0,0,549.38,124,26.54,26.54,0,0,0,586.23,124Z" fill="#fff"/><path d="M620.6,147V63.69h19.67v11.9C643.74,67.49,652,62,662.58,62,674,62,681.91,66.83,686,76.58,690.84,66.83,699.76,62,712.81,62c18,0,28.42,12.72,28.42,33.38v26.28c0,6.44,1.16,8.76,5.62,8.76a14.56,14.56,0,0,0,2.81-.33v16.69a28.37,28.37,0,0,1-8.59,1c-13.05,0-19.5-7.27-19.5-21.81V98.23c0-11.4-5.29-18.51-14.54-18.51s-16,8.1-16,19.33V147H671.34V98.23c0-11.4-5.45-18.51-14.87-18.51-9.25,0-16.2,8.1-16.2,19.33V147H620.6Z" fill="#fff"/></g><g id="Icon"><g opacity="0.8"><path d="M261,84l-70,34,70,34S260.78,84.27,261,84Z" fill="#fff"/></g><g opacity="0.8"><polygon points="121 152 191 118 121 84 121 152" fill="#fff"/></g><path d="M191,118l70,34c-0.27,0-41.76,25-60.63,36.24a17.64,17.64,0,0,1-18,0C163.47,177,121,152,121,152Z" fill="#fff" opacity="0.6"/><path d="M200.23,47.65C219.09,58.88,261,84,261,84l-70,34L121,84c0.27,0,42.31-25.12,61.18-36.36A17.64,17.64,0,0,1,200.23,47.65Z" fill="#fff"/><g opacity="0.8"><path d="M145,20.58l-35,17,35,17S144.89,20.72,145,20.58Z" fill="#fff"/></g><g opacity="0.8"><polygon points="75 54.58 110 37.58 75 20.58 75 54.58" fill="#fff"/></g><path d="M110,37.58l35,17c-0.14,0-20.88,12.5-30.31,18.12a8.82,8.82,0,0,1-9,0C96.23,67.08,75,54.58,75,54.58Z" fill="#fff" opacity="0.6"/><path d="M114.61,2.4C124,8,145,20.58,145,20.58l-35,17-35-17C75.14,20.59,96.16,8,105.59,2.4A8.82,8.82,0,0,1,114.61,2.4Z" fill="#fff"/><g opacity="0.8"><path d="M101,91L51,115.54l50,24.53S100.84,91.21,101,91Z" fill="#fff"/></g><g opacity="0.8"><polygon points="1 140.07 51 115.54 1 91.02 1 140.07" fill="#fff"/></g><path d="M51,115.54l50,24.53c-0.19,0-29.83,18-43.3,26.14a12.5,12.5,0,0,1-12.89,0C31.34,158.1,1,140.07,1,140.07Z" fill="#fff" opacity="0.6"/><path d="M57.59,64.79C71.06,72.9,101,91,101,91L51,115.54,1,91C1.19,91,31.22,72.9,44.7,64.79A12.5,12.5,0,0,1,57.59,64.79Z" fill="#fff"/></g></svg>
</a>
<a class="footer-logo lightbend" href="http://www.lightbend.com">
<svg id="lightbend-reverse" class="svg-icon svg-icon-logo-lightbend-reverse" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1228 262"><title>lightbend</title><g id="lightbend"><path d="M355,64.6a7.11,7.11,0,1,1,14.22,0V171.16h45.34a6.61,6.61,0,0,1,6.48,6.66,6.45,6.45,0,0,1-6.48,6.48H362a7.19,7.19,0,0,1-7-7.2V64.6Z" style="fill:#fff"/><path d="M447.77,62.08c0-4.5,3.6-7.38,8.1-7.38,4.68,0,8.28,2.88,8.28,7.38v2.34c0,4.32-3.6,7.38-8.28,7.38-4.5,0-8.1-3.06-8.1-7.38V62.08ZM449,97.36a7,7,0,0,1,6.84-7,6.92,6.92,0,0,1,7,7v80.82a6.77,6.77,0,0,1-6.84,7,6.92,6.92,0,0,1-7-7V97.36Z" style="fill:#fff"/><path d="M500.33,202.47a6.41,6.41,0,0,1-3.6-5.76,6.61,6.61,0,0,1,6.3-6.12,5.59,5.59,0,0,1,3.06.9A58.76,58.76,0,0,0,539,201.57c20.52,0,33.84-11.34,33.84-33.12v-11c-8.1,10.8-19.44,19.62-36.54,19.62-22.32,0-43.74-16.74-43.74-43.56v-0.36c0-27.18,21.6-43.92,43.74-43.92,17.46,0,28.8,8.64,36.36,18.72V97.36a6.87,6.87,0,0,1,6.84-7,7,7,0,0,1,7,7V168.1c0,14.4-4.32,25.38-11.88,32.94-8.28,8.28-20.7,12.42-35.46,12.42A72.88,72.88,0,0,1,500.33,202.47Zm72.9-69.12V133c0-19.08-16.56-31.5-34.2-31.5s-32.22,12.24-32.22,31.32v0.36c0,18.72,14.94,31.68,32.22,31.68C556.66,164.86,573.22,152.08,573.22,133.36Z" style="fill:#fff"/><path d="M618.4,59a6.93,6.93,0,1,1,13.86,0v48.42c6.12-10.08,15.84-18.18,31.86-18.18,22.5,0,35.64,15.12,35.64,37.26v51.66a6.93,6.93,0,1,1-13.86,0V129.94c0-17.28-9.36-28.08-25.74-28.08-16,0-27.9,11.7-27.9,29.16v47.16a6.77,6.77,0,0,1-6.84,7,6.92,6.92,0,0,1-7-7V59Z" style="fill:#fff"/><path d="M732.52,159.64V103.48H725a6.31,6.31,0,0,1-6.12-6.12A6.18,6.18,0,0,1,725,91.24h7.56v-22a6.88,6.88,0,0,1,6.84-7,7.15,7.15,0,0,1,7,7v22H770.5a6.34,6.34,0,0,1,6.3,6.12,6.22,6.22,0,0,1-6.3,6.12H746.38v54.36c0,11.34,6.3,15.48,15.66,15.48,4.86,0,7.38-1.26,8.46-1.26a6,6,0,0,1,5.94,5.94,5.79,5.79,0,0,1-4,5.4,35,35,0,0,1-13.68,2.52C743.86,185.92,732.52,178.54,732.52,159.64Z" style="fill:#fff"/><path d="M806.5,59a6.93,6.93,0,1,1,13.86,0V110c7.56-11.16,18.54-20.7,35.64-20.7,22.32,0,44.46,17.64,44.46,48.24v0.36c0,30.42-22,48.42-44.46,48.42-17.28,0-28.44-9.36-35.64-19.8v11.7a6.88,6.88,0,0,1-6.84,7,7,7,0,0,1-7-7V59Zm79.74,79v-0.36c0-22-15.12-36-32.76-36-17.28,0-33.66,14.58-33.66,35.82v0.36c0,21.6,16.38,36,33.66,36C871.48,173.86,886.24,160.54,886.24,138Z" style="fill:#fff"/><path d="M964.9,186.46c-25.56,0-46.44-19.62-46.44-48.42v-0.36c0-26.82,18.9-48.42,44.64-48.42,27.54,0,43.2,22.5,43.2,47.16a6.45,6.45,0,0,1-6.48,6.48H932.5c2,20.16,16.2,31.5,32.76,31.5,11.52,0,20-4.5,26.82-10.8a6,6,0,0,1,10.08,4.32,6,6,0,0,1-2.16,4.5C991.17,180.88,980.74,186.46,964.9,186.46Zm27.54-53.82C991,115.72,981.28,101,962.74,101c-16.2,0-28.44,13.5-30.24,31.68h59.94Z" style="fill:#fff"/><path d="M1029.34,97.36a7,7,0,0,1,6.84-7,6.92,6.92,0,0,1,7,7v10.08c6.12-10.08,15.84-18.18,31.86-18.18,22.5,0,35.64,15.12,35.64,37.26v51.66a6.93,6.93,0,1,1-13.86,0V129.94c0-17.28-9.36-28.08-25.74-28.08-16,0-27.9,11.7-27.9,29.16v47.16a6.77,6.77,0,0,1-6.84,7,6.92,6.92,0,0,1-7-7V97.36Z" style="fill:#fff"/><path d="M1226.61,178.17a6.93,6.93,0,1,1-13.86,0v-12.6c-7.56,11.16-18.54,20.7-35.64,20.7-22.32,0-44.46-17.64-44.46-48.24v-0.36c0-30.42,22.14-48.42,44.46-48.42,17.28,0,28.44,9.36,35.64,19.8V59a6.77,6.77,0,0,1,6.84-7,6.92,6.92,0,0,1,7,7V178.17Zm-79.74-40.68v0.36c0,22,15.3,36,32.76,36,17.28,0,33.66-14.58,33.66-36V137.5c0-21.42-16.38-35.82-33.66-35.82C1161.64,101.68,1146.88,115,1146.88,137.5Z" style="fill:#fff"/></g><g id="icon"><path d="M1,195v56a10,10,0,0,0,10,10H291a10,10,0,0,0,10-10V195a557.85,557.85,0,0,1-150,20A557.85,557.85,0,0,1,1,195Z" style="fill:#fff"/><path d="M291,1H11A10,10,0,0,0,1,11V176a539.94,539.94,0,0,0,150,21,539.94,539.94,0,0,0,150-21V11A10,10,0,0,0,291,1Z" style="fill:#fff"/></g></svg>
</a>
</div>
<p class="copyright">©2016 - All Rights Reserved</p>
</div>
</div>
</div>
</div>
</footer>
</div>
</div>
<script type="text/javascript" src="webjars/jquery/jquery.min.js"></script>
<script type="text/javascript" src="webjars/lagom-docs-theme/javascripts/vendor/fastclick.min.js"></script>
<script type="text/javascript" src="webjars/lagom-docs-theme/javascripts/foundation.min.js"></script>
<script type="text/javascript" src="webjars/lagom-docs-theme/javascripts/main.min.js"></script>
<style type="text/css">
@import "webjars/prettify/prettify.css";
</style>
<script type="text/javascript" charset="utf-8" src="webjars/prettify/prettify.js"></script>
<script type="text/javascript" charset="utf-8" src="webjars/prettify/lang-scala.js"></script>
<script type="text/javascript">
$(function(){
window.prettyPrint && prettyPrint()
});
</script>
</body>
</html>