1
0
mirror of https://github.com/taigrr/nats.docs synced 2025-01-18 04:03:23 -08:00

Started on developer section of the book

Added tool to build example html
Added book.json to bring in a couple plugins
Added building_the_book.md to help with how to build things
Updated gitignore with vscode and node modules
Checking in initial version of code examples
Copy/pasted a couple pages to get started on dev book
Updated html template for dev book to support graph vis/copy icon/styles
This commit is contained in:
Stephen Asbury
2019-05-14 17:16:17 -07:00
parent 908d73835a
commit 230970f41e
62 changed files with 7202 additions and 9 deletions

View File

@@ -0,0 +1,115 @@
<div class="tab-wrap">
<input type="radio" id="connect_default_go" name="connect_default" class="tab" checked>
<label for="connect_default_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_default_java" name="connect_default" class="tab">
<label for="connect_default_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_default_js" name="connect_default" class="tab">
<label for="connect_default_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_default_py" name="connect_default" class="tab">
<label for="connect_default_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_default_ruby" name="connect_default" class="tab">
<label for="connect_default_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_default_ts" name="connect_default" class="tab">
<label for="connect_default_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_default_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_default/main.go#L10-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(nats.DefaultURL)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_default_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectToDefaultServer.java#L10-16"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect();
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_default_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/connection_samples.js#L22-33"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect();
nc.on(&#39;connect&#39;, (c) =&gt; {
// Do something with the connection
doSomething();
// When done close it
nc.close();
});
nc.on(&#39;error&#39;, (err) =&gt; {
failed(err);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_default_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_default.py#L5-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect()
# Do something with the connection
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_default_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_default.rb#L1-10"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start do |nc|
# Do something with the connection
# Close the connection
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_default_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/connection_samples.ts#L16-34"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect();
// Do something with the connection
// When done close it
nc.close();
// alternatively, you can use the Promise pattern
let nc1: Client;
connect()
.then((c) =&gt; {
nc1 = c;
// Do something with the connection
nc1.close();
});
// add a .catch/.finally
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,129 @@
<div class="tab-wrap">
<input type="radio" id="connect_multiple_go" name="connect_multiple" class="tab" checked>
<label for="connect_multiple_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_multiple_java" name="connect_multiple" class="tab">
<label for="connect_multiple_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_multiple_js" name="connect_multiple" class="tab">
<label for="connect_multiple_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_multiple_py" name="connect_multiple" class="tab">
<label for="connect_multiple_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_multiple_ruby" name="connect_multiple" class="tab">
<label for="connect_multiple_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_multiple_ts" name="connect_multiple" class="tab">
<label for="connect_multiple_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_multiple_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_multiple/main.go#L11-25"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">servers := []string{&#34;nats://localhost:1222&#34;,
&#34;nats://localhost:1223&#34;,
&#34;nats://localhost:1224&#34;,
}
nc, err := nats.Connect(strings.Join(servers, &#34;,&#34;))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_multiple_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectToMultipleServers.java#L11-22"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://localhost:1222&#34;).
server(&#34;nats://localhost:1223&#34;).
server(&#34;nats://localhost:1224&#34;).
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_multiple_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/connection_samples.js#L67-84"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
servers: [
&#34;nats://demo.nats.io:4222&#34;,
&#34;nats://localhost:4222&#34;
]}
);
nc.on(&#39;connect&#39;, (c) =&gt; {
// Do something with the connection
doSomething();
// When done close it
nc.close();
});
nc.on(&#39;error&#39;, (err) =&gt; {
failed(err);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_multiple_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_multiple.py#L5-17"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[
&#34;nats://127.0.0.1:1222&#34;,
&#34;nats://127.0.0.1:1223&#34;,
&#34;nats://127.0.0.1:1224&#34;
])
# Do something with the connection
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_multiple_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_multiple.rb#L1-10"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers: [&#34;nats://127.0.0.1:1222&#34;, &#34;nats://127.0.0.1:1223&#34;, &#34;nats://127.0.0.1:1224&#34;]) do |nc|
# Do something with the connection
# Close the connection
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_multiple_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/connection_samples.ts#L53-65"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
servers: [
&#34;nats://demo.nats.io:4222&#34;,
&#34;nats://localhost:4222&#34;
]
});
// Do something with the connection
// When done close it
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,109 @@
<div class="tab-wrap">
<input type="radio" id="connect_name_go" name="connect_name" class="tab" checked>
<label for="connect_name_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_name_java" name="connect_name" class="tab">
<label for="connect_name_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_name_js" name="connect_name" class="tab">
<label for="connect_name_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_name_py" name="connect_name" class="tab">
<label for="connect_name_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_name_ruby" name="connect_name" class="tab">
<label for="connect_name_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_name_ts" name="connect_name" class="tab">
<label for="connect_name_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_name_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_name/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set a connection name
nc, err := nats.Connect(&#34;demo.nats.io&#34;, nats.Name(&#34;my-connection&#34;))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_name_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectName.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
connectionName(&#34;my-connection&#34;). // Set a connection name
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_name_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L73-79"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
url: &#34;nats://demo.nats.io:4222&#34;,
name: &#34;my-connection&#34;
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_name_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_name.py#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;], name=&#34;my-connection&#34;)
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_name_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_name.rb#L1-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers:[&#34;nats://demo.nats.io:4222&#34;], name: &#34;my-connection&#34;) do |nc|
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_name_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L55-63"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;,
name: &#34;my-connection&#34;
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,102 @@
<div class="tab-wrap">
<input type="radio" id="connect_options_go" name="connect_options" class="tab" checked>
<label for="connect_options_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_options_java" name="connect_options" class="tab">
<label for="connect_options_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_options_js" name="connect_options" class="tab">
<label for="connect_options_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_options_py" name="connect_options" class="tab">
<label for="connect_options_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_options_ruby" name="connect_options" class="tab">
<label for="connect_options_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_options_ts" name="connect_options" class="tab">
<label for="connect_options_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_options_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_options/main.go#L11-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(nats.DefaultURL, nats.Timeout(10*time.Second))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_options_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectWithOptions.java#L13-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
connectionTimeout(Duration.ofSeconds(10)). // Set timeout
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_options_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L121-123"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// connection timeout is not supported on node-nats
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_options_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_options.py#L5-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(connect_timeout=2)
# Do something with the connection
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_options_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_options.rb#L1-14"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># There is currently no connect timeout as part of the Ruby NATS client API, but you can use a timer to mimic it.
require &#39;nats/client&#39;
timer = EM.add_timer(5) do
NATS.connect do |nc|
# Do something with the connection
# Close the connection
nc.close
end
end
EM.cancel_timer(timer)
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_options_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L89-95"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;,
timeout: 1000
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,112 @@
<div class="tab-wrap">
<input type="radio" id="connect_pedantic_go" name="connect_pedantic" class="tab" checked>
<label for="connect_pedantic_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_pedantic_java" name="connect_pedantic" class="tab">
<label for="connect_pedantic_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_pedantic_js" name="connect_pedantic" class="tab">
<label for="connect_pedantic_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_pedantic_py" name="connect_pedantic" class="tab">
<label for="connect_pedantic_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_pedantic_ruby" name="connect_pedantic" class="tab">
<label for="connect_pedantic_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_pedantic_ts" name="connect_pedantic" class="tab">
<label for="connect_pedantic_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_pedantic_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_pedantic/main.go#L10-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">opts := nats.GetDefaultOptions()
opts.Url = &#34;demo.nats.io&#34;
// Turn on Pedantic
opts.Pedantic = true
nc, err := opts.Connect()
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_pedantic_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectPedantic.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
pedantic(). // Turn on pedantic
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_pedantic_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L39-45"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
url: &#34;nats://demo.nats.io:4222&#34;,
pedantic: true
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_pedantic_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_pedantic.py#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;], pedantic=True)
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_pedantic_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_pedantic.rb#L1-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(pedantic: true) do |nc|
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_pedantic_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L29-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;,
pedantic: true
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,144 @@
<div class="tab-wrap">
<input type="radio" id="connect_status_go" name="connect_status" class="tab" checked>
<label for="connect_status_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_status_java" name="connect_status" class="tab">
<label for="connect_status_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_status_js" name="connect_status" class="tab">
<label for="connect_status_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_status_py" name="connect_status" class="tab">
<label for="connect_status_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_status_ruby" name="connect_status" class="tab">
<label for="connect_status_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_status_ts" name="connect_status" class="tab">
<label for="connect_status_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_status_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_status/main.go#L10-33"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
getStatusTxt := func(nc *nats.Conn) string {
switch nc.Status() {
case nats.CONNECTED:
return &#34;Connected&#34;
case nats.CLOSED:
return &#34;Closed&#34;
default:
return &#34;Other&#34;
}
}
log.Printf(&#34;The connection is %v\n&#34;, getStatusTxt(nc))
nc.Close()
log.Printf(&#34;The connection is %v\n&#34;, getStatusTxt(nc))
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_status_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/GetConnectionStatus.java#L10-18"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
System.out.println(&#34;The Connection is: &#34; &#43; nc.getStatus());
nc.close();
System.out.println(&#34;The Connection is: &#34; &#43; nc.getStatus());
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_status_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/event_samples.js#L99-113"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect(&#34;nats://demo.nats.io:4222&#34;);
// on node you *must* register an error listener. If not registered
// the library emits an &#39;error&#39; event, the node process will exit.
nc.on(&#39;error&#39;, (err) =&gt; {
t.log(&#39;client got an error:&#39;, err);
});
if(nc.closed) {
t.log(&#39;client is closed&#39;);
} else {
t.log(&#39;client is not closed&#39;);
}
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_status_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_status.py#L6-27"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(
servers=[&#34;nats://demo.nats.io:4222&#34;],
)
# Do something with the connection.
print(&#34;The connection is connected?&#34;, nc.is_connected)
while True:
if nc.is_reconnecting:
print(&#34;Reconnecting to NATS...&#34;)
break
await asyncio.sleep(1)
await nc.close()
print(&#34;The connection is closed?&#34;, nc.is_closed)
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_status_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_status.rb#L3-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">NATS.start(max_reconnect_attempts: 2) do |nc|
puts &#34;Connect is connected?: #{nc.connected?}&#34;
timer = EM.add_periodic_timer(1) do
if nc.closing?
puts &#34;Connection closed...&#34;
EM.cancel_timer(timer)
NATS.stop
end
if nc.reconnecting?
puts &#34;Reconnecting to NATS...&#34;
next
end
end
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_status_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/event_samples.ts#L62-68"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">if(nc.isClosed()) {
t.log(&#39;the client is closed&#39;);
} else {
t.log(&#39;the client is running&#39;);
}
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,213 @@
<div class="tab-wrap">
<input type="radio" id="connect_tls_go" name="connect_tls" class="tab" checked>
<label for="connect_tls_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_tls_java" name="connect_tls" class="tab">
<label for="connect_tls_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_tls_js" name="connect_tls" class="tab">
<label for="connect_tls_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_tls_py" name="connect_tls" class="tab">
<label for="connect_tls_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_tls_ruby" name="connect_tls" class="tab">
<label for="connect_tls_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_tls_ts" name="connect_tls" class="tab">
<label for="connect_tls_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_tls_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_tls/main.go#L10-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;localhost&#34;,
nats.ClientCert(&#34;resources/certs/cert.pem&#34;, &#34;resources/certs/key.pem&#34;),
nats.RootCAs(&#34;resources/certs/ca.pem&#34;))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectTLS.java#L18-81"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class SSLUtils {
public static String KEYSTORE_PATH = &#34;src/main/resources/keystore.jks&#34;;
public static String TRUSTSTORE_PATH = &#34;src/main/resources/cacerts&#34;;
public static String STORE_PASSWORD = &#34;password&#34;;
public static String KEY_PASSWORD = &#34;password&#34;;
public static String ALGORITHM = &#34;SunX509&#34;;
public static KeyStore loadKeystore(String path) throws Exception {
KeyStore store = KeyStore.getInstance(&#34;JKS&#34;);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(path));
try {
store.load(in, STORE_PASSWORD.toCharArray());
} finally {
if (in != null) {
in.close();
}
}
return store;
}
public static KeyManager[] createTestKeyManagers() throws Exception {
KeyStore store = loadKeystore(KEYSTORE_PATH);
KeyManagerFactory factory = KeyManagerFactory.getInstance(ALGORITHM);
factory.init(store, KEY_PASSWORD.toCharArray());
return factory.getKeyManagers();
}
public static TrustManager[] createTestTrustManagers() throws Exception {
KeyStore store = loadKeystore(TRUSTSTORE_PATH);
TrustManagerFactory factory = TrustManagerFactory.getInstance(ALGORITHM);
factory.init(store);
return factory.getTrustManagers();
}
public static SSLContext createSSLContext() throws Exception {
SSLContext ctx = SSLContext.getInstance(Options.DEFAULT_SSL_PROTOCOL);
ctx.init(createTestKeyManagers(), createTestTrustManagers(), new SecureRandom());
return ctx;
}
}
public class ConnectTLS {
public static void main(String[] args) {
try {
SSLContext ctx = SSLUtils.createSSLContext();
Options options = new Options.Builder().
server(&#34;nats://localhost:4222&#34;).
sslContext(ctx). // Set the SSL context
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/tls_samples.js#L44-56"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let caCert = fs.readFileSync(caCertPath);
let clientCert = fs.readFileSync(clientCertPath);
let clientKey = fs.readFileSync(clientKeyPath);
let nc = NATS.connect({
url: url,
tls: {
ca: [caCert],
key: [clientKey],
cert: [clientCert]
}
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_tls.py#L7-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
ssl_ctx = ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH)
ssl_ctx.load_verify_locations(&#39;ca.pem&#39;)
ssl_ctx.load_cert_chain(certfile=&#39;client-cert.pem&#39;,
keyfile=&#39;client-key.pem&#39;)
await nc.connect(io_loop=loop, tls=ssl_ctx)
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;], tls=ssl_ctx)
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_tls.rb#L3-51"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">EM.run do
options = {
:servers =&gt; [
&#39;nats://localhost:4222&#39;,
],
:tls =&gt; {
:private_key_file =&gt; &#39;./spec/configs/certs/key.pem&#39;,
:cert_chain_file =&gt; &#39;./spec/configs/certs/server.pem&#39;
}
}
NATS.connect(options) do |nc|
puts &#34;#{Time.now.to_f} - Connected to NATS at #{nc.connected_server}&#34;
nc.subscribe(&#34;hello&#34;) do |msg|
puts &#34;#{Time.now.to_f} - Received: #{msg}&#34;
end
nc.flush do
nc.publish(&#34;hello&#34;, &#34;world&#34;)
end
EM.add_periodic_timer(0.1) do
next unless nc.connected?
nc.publish(&#34;hello&#34;, &#34;hello&#34;)
end
# Set default callbacks
nc.on_error do |e|
puts &#34;#{Time.now.to_f } - Error: #{e}&#34;
end
nc.on_disconnect do |reason|
puts &#34;#{Time.now.to_f} - Disconnected: #{reason}&#34;
end
nc.on_reconnect do |nc|
puts &#34;#{Time.now.to_f} - Reconnected to NATS server at #{nc.connected_server}&#34;
end
nc.on_close do
puts &#34;#{Time.now.to_f} - Connection to NATS closed&#34;
EM.stop
end
end
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/tls_samples.ts#L40-52"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let caCert = readFileSync(caCertPath);
let clientCert = readFileSync(clientCertPath);
let clientKey = readFileSync(clientKeyPath);
let nc = await connect({
url: url,
tls: {
ca: [caCert],
key: [clientKey],
cert: [clientCert]
}
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,191 @@
<div class="tab-wrap">
<input type="radio" id="connect_tls_url_go" name="connect_tls_url" class="tab" checked>
<label for="connect_tls_url_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_tls_url_java" name="connect_tls_url" class="tab">
<label for="connect_tls_url_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_tls_url_js" name="connect_tls_url" class="tab">
<label for="connect_tls_url_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_tls_url_py" name="connect_tls_url" class="tab">
<label for="connect_tls_url_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_tls_url_ruby" name="connect_tls_url" class="tab">
<label for="connect_tls_url_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_tls_url_ts" name="connect_tls_url" class="tab">
<label for="connect_tls_url_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_tls_url_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_tls_url/main.go#L10-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;localhost&#34;,
nats.Secure(),
nats.RootCAs(&#34;resources/certs/ca.pem&#34;)) // May need this if server is using self-signed certificate
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_url_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectTLSURL.java#L18-80"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class SSLUtils2 {
public static String KEYSTORE_PATH = &#34;src/main/resources/keystore.jks&#34;;
public static String TRUSTSTORE_PATH = &#34;src/main/resources/cacerts&#34;;
public static String STORE_PASSWORD = &#34;password&#34;;
public static String KEY_PASSWORD = &#34;password&#34;;
public static String ALGORITHM = &#34;SunX509&#34;;
public static KeyStore loadKeystore(String path) throws Exception {
KeyStore store = KeyStore.getInstance(&#34;JKS&#34;);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(path));
try {
store.load(in, STORE_PASSWORD.toCharArray());
} finally {
if (in != null) {
in.close();
}
}
return store;
}
public static KeyManager[] createTestKeyManagers() throws Exception {
KeyStore store = loadKeystore(KEYSTORE_PATH);
KeyManagerFactory factory = KeyManagerFactory.getInstance(ALGORITHM);
factory.init(store, KEY_PASSWORD.toCharArray());
return factory.getKeyManagers();
}
public static TrustManager[] createTestTrustManagers() throws Exception {
KeyStore store = loadKeystore(TRUSTSTORE_PATH);
TrustManagerFactory factory = TrustManagerFactory.getInstance(ALGORITHM);
factory.init(store);
return factory.getTrustManagers();
}
public static SSLContext createSSLContext() throws Exception {
SSLContext ctx = SSLContext.getInstance(Options.DEFAULT_SSL_PROTOCOL);
ctx.init(createTestKeyManagers(), createTestTrustManagers(), new SecureRandom());
return ctx;
}
}
public class ConnectTLSURL {
public static void main(String[] args) {
try {
SSLContext.setDefault(SSLUtils2.createSSLContext()); // Set the default context
Options options = new Options.Builder().
server(&#34;tls://localhost:4222&#34;). // Use the TLS protocol
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_url_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/tls_samples.js#L26-31"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
url: &#34;tls://demo.nats.io:4443&#34;,
tls: true
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_url_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_tls_url.py#L1-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">import asyncio
import ssl
import certifi
from nats.aio.client import Client as NATS
from nats.aio.errors import ErrTimeout
async def run(loop):
nc = NATS()
# If using Python 3.7 in OS X and getting SSL errors, run first:
#
# /Applications/Python\ 3.7/Install\ Certificates.command
#
# Setting the tls as the scheme will use same defaults as `ssl.create_default_context()`
#
await nc.connect(&#34;tls://demo.nats.io:4443&#34;, loop=loop)
async def message_handler(msg):
subject = msg.subject
reply = msg.reply
data = msg.data.decode()
print(&#34;Received a message on &#39;{subject} {reply}&#39;: {data}&#34;.format(
subject=subject, reply=reply, data=data))
# Simple publisher and async subscriber via coroutine.
sid = await nc.subscribe(&#34;foo&#34;, cb=message_handler)
await nc.flush()
# Stop receiving after 2 messages.
await nc.auto_unsubscribe(sid, 2)
await nc.publish(&#34;foo&#34;, b&#39;Hello&#39;)
await nc.publish(&#34;foo&#34;, b&#39;World&#39;)
await nc.publish(&#34;foo&#34;, b&#39;!!!!!&#39;)
await asyncio.sleep(1, loop=loop)
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_url_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_tls_url.rb#L3-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">EM.run do
# In order to use TLS with the Ruby NATS client, use the :tls option
# when customizing the connection with an empty block.
options = {
:servers =&gt; [
&#39;nats://demo.nats.io:4443&#39;,
],
:tls =&gt; {}
}
NATS.connect(options) do |nc|
puts :connected
end
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_tls_url_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/tls_samples.ts#L26-33"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
url: &#34;tls://demo.nats.io:4443&#34;
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,89 @@
<div class="tab-wrap">
<input type="radio" id="connect_token_go" name="connect_token" class="tab" checked>
<label for="connect_token_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_token_java" name="connect_token" class="tab">
<label for="connect_token_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_token_js" name="connect_token" class="tab">
<label for="connect_token_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_token_py" name="connect_token" class="tab">
<label for="connect_token_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_token_ruby" name="connect_token" class="tab">
<label for="connect_token_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_token_ts" name="connect_token" class="tab">
<label for="connect_token_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_token_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_token/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set a token
nc, err := nats.Connect(&#34;localhost&#34;, nats.Token(&#34;mytoken&#34;))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectToken.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://localhost:4222&#34;).
token(&#34;mytoken&#34;). // Set a token
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/auth_examples.js#L81-83"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({url: `nats://127.0.0.1:${port}`, token: &#34;mytoken!&#34;});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_token.py#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://mytoken@demo.nats.io:4222&#34;])
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_token.rb#L3-7"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">NATS.start(token: &#34;deadbeef&#34;) do |nc|
puts &#34;Connected using token&#34;
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/auth_examples.ts#L58-60"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = await connect({url: server.nats, token: &#34;mytoken&#34;});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,87 @@
<div class="tab-wrap">
<input type="radio" id="connect_token_url_go" name="connect_token_url" class="tab" checked>
<label for="connect_token_url_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_token_url_java" name="connect_token_url" class="tab">
<label for="connect_token_url_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_token_url_js" name="connect_token_url" class="tab">
<label for="connect_token_url_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_token_url_py" name="connect_token_url" class="tab">
<label for="connect_token_url_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_token_url_ruby" name="connect_token_url" class="tab">
<label for="connect_token_url_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_token_url_ts" name="connect_token_url" class="tab">
<label for="connect_token_url_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_token_url_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_token_url/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Token in URL
nc, err := nats.Connect(&#34;mytoken@localhost&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_url_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectTokenURL.java#L10-16"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://mytoken@localhost:4222&#34;);//Token in URL
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_url_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/auth_examples.js#L63-66"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let url = `nats://mytoken!@127.0.0.1:${port}`;
let nc = NATS.connect({url: url});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_url_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_token_url.py#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://mytoken@demo.nats.io:4222&#34;])
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_url_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_token_url.rb#L3-7"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">NATS.start(&#34;deadbeef@127.0.0.1:4222&#34;) do |nc|
puts &#34;Connected using token!&#34;
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_token_url_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/auth_examples.ts#L47-50"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let url = `nats://:mytoken!@127.0.0.1:${port}`;
let nc = await connect({url: url});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,108 @@
<div class="tab-wrap">
<input type="radio" id="connect_url_go" name="connect_url" class="tab" checked>
<label for="connect_url_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_url_java" name="connect_url" class="tab">
<label for="connect_url_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_url_js" name="connect_url" class="tab">
<label for="connect_url_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_url_py" name="connect_url" class="tab">
<label for="connect_url_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_url_ruby" name="connect_url" class="tab">
<label for="connect_url_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_url_ts" name="connect_url" class="tab">
<label for="connect_url_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_url_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_url/main.go#L10-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// If connecting to the default port, the URL can be simplified
// to just the hostname/IP.
// That is, the connect below is equivalent to:
// nats.Connect(&#34;nats://demo.nats.io:4222&#34;)
nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_url_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectToServerURL.java#L10-16"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_url_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/connection_samples.js#L45-56"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect(&#34;nats://demo.nats.io:4222&#34;);
nc.on(&#39;connect&#39;, (c) =&gt; {
// Do something with the connection
doSomething();
// When done close it
nc.close();
});
nc.on(&#39;error&#39;, (err) =&gt; {
failed(err);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_url_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_url.py#L5-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
# Do something with the connection
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_url_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_url.rb#L1-10"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers: [&#34;nats://demo.nats.io:4222&#34;]) do |nc|
# Do something with the connection
# Close the connection
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_url_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/connection_samples.ts#L40-47"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect(&#34;nats://demo.nats.io:4222&#34;);
// Do something with the connection
// Close the connection
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,103 @@
<div class="tab-wrap">
<input type="radio" id="connect_userpass_go" name="connect_userpass" class="tab" checked>
<label for="connect_userpass_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_userpass_java" name="connect_userpass" class="tab">
<label for="connect_userpass_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_userpass_js" name="connect_userpass" class="tab">
<label for="connect_userpass_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_userpass_py" name="connect_userpass" class="tab">
<label for="connect_userpass_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_userpass_ruby" name="connect_userpass" class="tab">
<label for="connect_userpass_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_userpass_ts" name="connect_userpass" class="tab">
<label for="connect_userpass_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_userpass_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_userpass/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set a user and plain text password
nc, err := nats.Connect(&#34;localhost&#34;, nats.UserInfo(&#34;myname&#34;, &#34;password&#34;))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectUserPassword.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://localhost:4222&#34;).
userInfo(&#34;myname&#34;,&#34;password&#34;). // Set a user and plain text password
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/auth_examples.js#L19-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({url: server.nats, user: &#34;myname&#34;, pass: &#34;password&#34;});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_userpass.py#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://myname:password@demo.nats.io:4222&#34;])
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_userpass.rb#L1-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers:[&#34;nats://myname:password@127.0.0.1:4222&#34;], name: &#34;my-connection&#34;) do |nc|
nc.on_error do |e|
puts &#34;Error: #{e}&#34;
end
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/auth_examples.ts#L21-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = await connect({url: server.nats, user: &#34;myname&#34;, pass: &#34;password&#34;});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,101 @@
<div class="tab-wrap">
<input type="radio" id="connect_userpass_url_go" name="connect_userpass_url" class="tab" checked>
<label for="connect_userpass_url_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_userpass_url_java" name="connect_userpass_url" class="tab">
<label for="connect_userpass_url_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_userpass_url_js" name="connect_userpass_url" class="tab">
<label for="connect_userpass_url_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_userpass_url_py" name="connect_userpass_url" class="tab">
<label for="connect_userpass_url_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_userpass_url_ruby" name="connect_userpass_url" class="tab">
<label for="connect_userpass_url_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_userpass_url_ts" name="connect_userpass_url" class="tab">
<label for="connect_userpass_url_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_userpass_url_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_userpass_url/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set a user and plain text password
nc, err := nats.Connect(&#34;myname:password@localhost&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_url_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectUserPasswordURL.java#L10-16"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://myname:password@localhost:4222&#34;);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_url_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/auth_examples.js#L40-43"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let url = `nats://myname:password@127.0.0.1:${port}`;
let nc = NATS.connect(url);
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_url_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_userpass_url.py#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://myname:password@demo.nats.io:4222&#34;])
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_url_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_userpass_url.rb#L1-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers:[&#34;nats://myname:password@127.0.0.1:4222&#34;], name: &#34;my-connection&#34;) do |nc|
nc.on_error do |e|
puts &#34;Error: #{e}&#34;
end
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_userpass_url_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/auth_examples.ts#L34-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let url = `nats://myname:password@127.0.0.1:${port}`;
let nc = await connect({url: url});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,112 @@
<div class="tab-wrap">
<input type="radio" id="connect_verbose_go" name="connect_verbose" class="tab" checked>
<label for="connect_verbose_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connect_verbose_java" name="connect_verbose" class="tab">
<label for="connect_verbose_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connect_verbose_js" name="connect_verbose" class="tab">
<label for="connect_verbose_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connect_verbose_py" name="connect_verbose" class="tab">
<label for="connect_verbose_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connect_verbose_ruby" name="connect_verbose" class="tab">
<label for="connect_verbose_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connect_verbose_ts" name="connect_verbose" class="tab">
<label for="connect_verbose_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connect_verbose_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/connect_verbose/main.go#L10-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">opts := nats.GetDefaultOptions()
opts.Url = &#34;demo.nats.io&#34;
// Turn on Verbose
opts.Verbose = true
nc, err := opts.Connect()
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_verbose_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectVerbose.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
verbose(). // Turn on verbose
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_verbose_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L56-62"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
url: &#34;nats://demo.nats.io:4222&#34;,
verbose: true
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_verbose_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/connect_verbose.py#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;], verbose=True)
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_verbose_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/connect_verbose.rb#L1-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(verbose: true) do |nc|
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connect_verbose_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L42-50"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;,
verbose: true
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,178 @@
<div class="tab-wrap">
<input type="radio" id="connection_listener_go" name="connection_listener" class="tab" checked>
<label for="connection_listener_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="connection_listener_java" name="connection_listener" class="tab">
<label for="connection_listener_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="connection_listener_js" name="connection_listener" class="tab">
<label for="connection_listener_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="connection_listener_py" name="connection_listener" class="tab">
<label for="connection_listener_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="connection_listener_ruby" name="connection_listener" class="tab">
<label for="connection_listener_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="connection_listener_ts" name="connection_listener" class="tab">
<label for="connection_listener_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="connection_listener_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/notapplicable.txt#L5-14"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// There is not a single listener for connection events in the NATS Go Client.
// Instead, you can set individual event handlers using:
DisconnectHandler(cb ConnHandler)
ReconnectHandler(cb ConnHandler)
ClosedHandler(cb ConnHandler)
DiscoveredServersHandler(cb ConnHandler)
ErrorHandler(cb ErrHandler)
</code></pre>
</div>
<div class="tab__content">
<pre id="connection_listener_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SetConnectionListener.java#L8-33"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class MyConnectionListener implements ConnectionListener {
public void connectionEvent(Connection natsConnection, Events event) {
System.out.println(&#34;Connection event - &#34;&#43;event);
}
}
public class SetConnectionListener {
public static void main(String[] args) {
try {
Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
connectionListener(new MyConnectionListener()). // Set the listener
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</code></pre>
</div>
<div class="tab__content">
<pre id="connection_listener_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/event_samples.js#L11-41"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect(&#34;nats://demo.nats.io:4222&#34;);
nc.on(&#39;error&#39;, (err) =&gt; {
t.log(&#39;error&#39;, err);
});
nc.on(&#39;connect&#39;, () =&gt; {
t.log(&#39;client connected&#39;);
});
nc.on(&#39;disconnect&#39;, () =&gt; {
t.log(&#39;client disconnected&#39;);
});
nc.on(&#39;reconnecting&#39;, () =&gt; {
t.log(&#39;client reconnecting&#39;);
});
nc.on(&#39;reconnect&#39;, () =&gt; {
t.log(&#39;client reconnected&#39;);
});
nc.on(&#39;close&#39;, () =&gt; {
t.log(&#39;client closed&#39;);
});
nc.on(&#39;permission_error&#39;, (err) =&gt; {
t.log(&#39;permission_error&#39;, err);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="connection_listener_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/notapplicable.txt#L17-42"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python"># Asyncio NATS client can be defined a number of event callbacks
async def disconnected_cb():
print(&#34;Got disconnected!&#34;)
async def reconnected_cb():
# See who we are connected to on reconnect.
print(&#34;Got reconnected to {url}&#34;.format(url=nc.connected_url.netloc))
async def error_cb(e):
print(&#34;There was an error: {}&#34;.format(e))
async def closed_cb():
print(&#34;Connection is closed&#34;)
# Setup callbacks to be notified on disconnects and reconnects
options[&#34;disconnected_cb&#34;] = disconnected_cb
options[&#34;reconnected_cb&#34;] = reconnected_cb
# Setup callbacks to be notified when there is an error
# or connection is closed.
options[&#34;error_cb&#34;] = error_cb
options[&#34;closed_cb&#34;] = closed_cb
await nc.connect(**options)
</code></pre>
</div>
<div class="tab__content">
<pre id="connection_listener_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/notapplicable.txt#L29-44"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># There is not a single listener for connection events in the Ruby NATS Client.
# Instead, you can set individual event handlers using:
NATS.on_disconnect do
end
NATS.on_reconnect do
end
NATS.on_close do
end
NATS.on_error do
end
</code></pre>
</div>
<div class="tab__content">
<pre id="connection_listener_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/event_samples.ts#L7-27"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// connect will happen once - the first connect
nc.on(&#39;connect&#39;, (nc) =&gt; {
// nc is the connection that connected
t.log(&#39;client connected&#39;);
});
nc.on(&#39;disconnect&#39;, (url) =&gt; {
// nc is the connection that reconnected
t.log(&#39;disconnected from&#39;, url);
});
nc.on(&#39;reconnecting&#39;, (url) =&gt; {
t.log(&#39;reconnecting to&#39;, url);
});
nc.on(&#39;reconnect&#39;, (nc, url) =&gt; {
// nc is the connection that reconnected
t.log(&#39;reconnected to&#39;, url);
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,79 @@
<div class="tab-wrap">
<input type="radio" id="control_2k_go" name="control_2k" class="tab" checked>
<label for="control_2k_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="control_2k_java" name="control_2k" class="tab">
<label for="control_2k_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="control_2k_js" name="control_2k" class="tab">
<label for="control_2k_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="control_2k_py" name="control_2k" class="tab">
<label for="control_2k_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="control_2k_ruby" name="control_2k" class="tab">
<label for="control_2k_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="control_2k_ts" name="control_2k" class="tab">
<label for="control_2k_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="control_2k_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/notapplicable.txt#L1-3"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// This does not apply to the NATS Go Client
</code></pre>
</div>
<div class="tab__content">
<pre id="control_2k_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectControl2k.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
maxControlLine(2 * 1024). // Set the max control line to 2k
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="control_2k_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L90-97"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// set this option before creating a connection
NATS.MAX_CONTROL_LINE_SIZE = 1024*2;
let nc = NATS.connect({
url: &#34;nats://demo.nats.io:4222&#34;
});
</code></pre>
</div>
<div class="tab__content">
<pre id="control_2k_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/notapplicable.txt#L5-7"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python"># Asyncio NATS client does not allow custom control lines
</code></pre>
</div>
<div class="tab__content">
<pre id="control_2k_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/notapplicable.txt#L5-7"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># There is no need to customize this in the Ruby NATS client.
</code></pre>
</div>
<div class="tab__content">
<pre id="control_2k_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L68-70"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// control line size is not configurable on ts-nats
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,185 @@
<div class="tab-wrap">
<input type="radio" id="drain_conn_go" name="drain_conn" class="tab" checked>
<label for="drain_conn_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="drain_conn_java" name="drain_conn" class="tab">
<label for="drain_conn_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="drain_conn_py" name="drain_conn" class="tab">
<label for="drain_conn_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="drain_conn_ruby" name="drain_conn" class="tab">
<label for="drain_conn_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="drain_conn_ts" name="drain_conn" class="tab">
<label for="drain_conn_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="drain_conn_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/drain_conn/main.go#L12-61"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">wg := sync.WaitGroup{}
wg.Add(1)
errCh := make(chan error, 1)
// To simulate a timeout, you would set the DrainTimeout()
// to a value less than the time spent in the message callback,
// so say: nats.DrainTimeout(10*time.Millisecond).
nc, err := nats.Connect(&#34;demo.nats.io&#34;,
nats.DrainTimeout(10*time.Second),
nats.ErrorHandler(func(_ *nats.Conn, _ *nats.Subscription, err error) {
errCh &lt;- err
}),
nats.ClosedHandler(func(_ *nats.Conn) {
wg.Done()
}))
if err != nil {
log.Fatal(err)
}
// Subscribe, but add some delay while processing.
if _, err := nc.Subscribe(&#34;foo&#34;, func(_ *nats.Msg) {
time.Sleep(200 * time.Millisecond)
}); err != nil {
log.Fatal(err)
}
// Publish a message
if err := nc.Publish(&#34;foo&#34;, []byte(&#34;hello&#34;)); err != nil {
log.Fatal(err)
}
// Drain the connection, which will close it when done.
if err := nc.Drain(); err != nil {
log.Fatal(err)
}
// Wait for the connection to be closed.
wg.Wait()
// Check if there was an error
select {
case e := &lt;-errCh:
log.Fatal(e)
default:
}
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_conn_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/DrainConn.java#L16-40"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Use a latch to wait for a message to arrive
CountDownLatch latch = new CountDownLatch(1);
// Create a dispatcher and inline message handler
Dispatcher d = nc.createDispatcher((msg) -&gt; {
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(str);
latch.countDown();
});
// Subscribe
d.subscribe(&#34;updates&#34;);
// Wait for a message to come in
latch.await();
// Drain the connection, which will close it
CompletableFuture&lt;Boolean&gt; drained = nc.drain(Duration.ofSeconds(10));
// Wait for the drain to complete
drained.get();
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_conn_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/drain_conn.py#L1-34"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">import asyncio
from nats.aio.client import Client as NATS
async def example(loop):
nc = NATS()
await nc.connect(&#34;nats://127.0.0.1:4222&#34;, loop=loop)
async def handler(msg):
print(&#34;[Received] &#34;, msg)
await nc.publish(msg.reply, b&#39;I can help&#39;)
# Can check whether client is in draining state
if nc.is_draining:
print(&#34;Connection is draining&#34;)
await nc.subscribe(&#34;help&#34;, &#34;workers&#34;, cb=handler)
await nc.flush()
requests = []
for i in range(0, 10):
request = nc.request(&#34;help&#34;, b&#39;help!&#39;, timeout=1)
requests.append(request)
# Wait for all the responses
responses = []
responses = await asyncio.gather(*requests)
# Gracefully close the connection.
await nc.drain()
print(&#34;Received {} responses&#34;.format(len(responses)))
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_conn_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/drain_conn.rb#L3-26"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">NATS.start(drain_timeout: 1) do |nc|
NATS.subscribe(&#39;foo&#39;, queue: &#34;workers&#34;) do |msg, reply, sub|
nc.publish(reply, &#34;ACK:#{msg}&#34;)
end
NATS.subscribe(&#39;bar&#39;, queue: &#34;workers&#34;) do |msg, reply, sub|
nc.publish(reply, &#34;ACK:#{msg}&#34;)
end
NATS.subscribe(&#39;quux&#39;, queue: &#34;workers&#34;) do |msg, reply, sub|
nc.publish(reply, &#34;ACK:#{msg}&#34;)
end
EM.add_timer(2) do
next if NATS.draining?
# Drain gracefully closes the connection.
NATS.drain do
puts &#34;Done draining. Connection is closed.&#34;
end
end
end
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_conn_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/connection_samples.ts#L73-83"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let sub = await nc.subscribe(&#39;updates&#39;, (err, msg) =&gt; {
t.log(&#39;worker got message&#39;, msg.data);
}, {queue: &#34;workers&#34;});
// [end drain_sub]
nc.flush();
await nc.drain();
// client must close when the connection drain resolves
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,166 @@
<div class="tab-wrap">
<input type="radio" id="drain_sub_go" name="drain_sub" class="tab" checked>
<label for="drain_sub_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="drain_sub_java" name="drain_sub" class="tab">
<label for="drain_sub_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="drain_sub_js" name="drain_sub" class="tab">
<label for="drain_sub_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="drain_sub_py" name="drain_sub" class="tab">
<label for="drain_sub_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="drain_sub_ruby" name="drain_sub" class="tab">
<label for="drain_sub_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="drain_sub_ts" name="drain_sub" class="tab">
<label for="drain_sub_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="drain_sub_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/drain_sub/main.go#L13-67"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">
nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
done := sync.WaitGroup{}
done.Add(1)
count := 0
errCh := make(chan error, 1)
msgAfterDrain := &#34;not this one&#34;
// This callback will process each message slowly
sub, err := nc.Subscribe(&#34;updates&#34;, func(m *nats.Msg) {
if string(m.Data) == msgAfterDrain {
errCh &lt;- fmt.Errorf(&#34;Should not have received this message&#34;)
return
}
time.Sleep(100 * time.Millisecond)
count&#43;&#43;
if count == 2 {
done.Done()
}
})
// Send 2 messages
for i := 0; i &lt; 2; i&#43;&#43; {
nc.Publish(&#34;updates&#34;, []byte(&#34;hello&#34;))
}
// Call Drain on the subscription. It unsubscribes but
// wait for all pending messages to be processed.
if err := sub.Drain(); err != nil {
log.Fatal(err)
}
// Send one more message, this message should not be received
nc.Publish(&#34;updates&#34;, []byte(msgAfterDrain))
// Wait for the subscription to have processed the 2 messages.
done.Wait()
// Now check that the 3rd message was not received
select {
case e := &lt;-errCh:
log.Fatal(e)
case &lt;-time.After(200 * time.Millisecond):
// OK!
}
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_sub_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/DrainSub.java#L16-43"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Use a latch to wait for a message to arrive
CountDownLatch latch = new CountDownLatch(1);
// Create a dispatcher and inline message handler
Dispatcher d = nc.createDispatcher((msg) -&gt; {
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(str);
latch.countDown();
});
// Subscribe
d.subscribe(&#34;updates&#34;);
// Wait for a message to come in
latch.await();
// Messages that have arrived will be processed
CompletableFuture&lt;Boolean&gt; drained = d.drain(Duration.ofSeconds(10));
// Wait for the drain to complete
drained.get();
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_sub_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L232-234"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// Drain subscription is not supported.
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_sub_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/drain_sub.py#L1-24"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">import asyncio
from nats.aio.client import Client as NATS
async def example(loop):
nc = NATS()
await nc.connect(&#34;nats://127.0.0.1:4222&#34;, loop=loop)
async def handler(msg):
print(&#34;[Received] &#34;, msg)
await nc.publish(msg.reply, b&#39;I can help&#39;)
# Can check whether client is in draining state
if nc.is_draining:
print(&#34;Connection is draining&#34;)
sid = await nc.subscribe(&#34;help&#34;, &#34;workers&#34;, cb=handler)
await nc.flush()
# Gracefully unsubscribe the subscription
await nc.drain(sid)
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_sub_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/notapplicable.txt#L9-11"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># There is currently no API to drain a single subscription, the whole connection can be drained though via NATS.drain
</code></pre>
</div>
<div class="tab__content">
<pre id="drain_sub_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L208-212"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let sub = await nc.subscribe(&#39;updates&#39;, (err, msg) =&gt; {
t.log(&#39;worker got message&#39;, msg.data);
}, {queue: &#34;workers&#34;});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,139 @@
<div class="tab-wrap">
<input type="radio" id="error_listener_go" name="error_listener" class="tab" checked>
<label for="error_listener_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="error_listener_java" name="error_listener" class="tab">
<label for="error_listener_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="error_listener_js" name="error_listener" class="tab">
<label for="error_listener_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="error_listener_py" name="error_listener" class="tab">
<label for="error_listener_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="error_listener_ruby" name="error_listener" class="tab">
<label for="error_listener_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="error_listener_ts" name="error_listener" class="tab">
<label for="error_listener_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="error_listener_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/error_listener/main.go#L10-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set the callback that will be invoked when an asynchronous error occurs.
nc, err := nats.Connect(&#34;demo.nats.io&#34;,
nats.ErrorHandler(func(nc *nats.Conn, sub *nats.Subscription, err error) {
log.Printf(&#34;Error: %v&#34;, err)
}))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="error_listener_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SetErrorListener.java#L9-43"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class MyErrorListener implements ErrorListener {
public void errorOccurred(Connection conn, String error)
{
System.out.println(&#34;The server notificed the client with: &#34;&#43;error);
}
public void exceptionOccurred(Connection conn, Exception exp) {
System.out.println(&#34;The connection handled an exception: &#34;&#43;exp.getLocalizedMessage());
}
public void slowConsumerDetected(Connection conn, Consumer consumer) {
System.out.println(&#34;A slow consumer was detected.&#34;);
}
}
public class SetErrorListener {
public static void main(String[] args) {
try {
Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
errorListener(new MyErrorListener()). // Set the listener
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</code></pre>
</div>
<div class="tab__content">
<pre id="error_listener_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/event_samples.js#L76-84"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect(&#34;nats://demo.nats.io:4222&#34;);
// on node you *must* register an error listener. If not registered
// the library emits an &#39;error&#39; event, the node process will exit.
nc.on(&#39;error&#39;, (err) =&gt; {
t.log(&#39;client got an error:&#39;, err);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="error_listener_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/error_listener.py#L6-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
async def error_cb(e):
print(&#34;Error: &#34;, e)
await nc.connect(
servers=[&#34;nats://demo.nats.io:4222&#34;],
reconnect_time_wait=10,
error_cb=error_cb,
)
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="error_listener_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/error_listener.rb#L1-11"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers:[&#34;nats://demo.nats.io:4222&#34;]) do |nc|
nc.on_error do |e|
puts &#34;Error: #{e}&#34;
end
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="error_listener_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/event_samples.ts#L48-54"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// on node you *must* register an error listener. If not registered
// the library emits an &#39;error&#39; event, the node process will exit.
nc.on(&#39;error&#39;, (err) =&gt; {
t.log(&#39;client got an out of band error:&#39;, err);
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,132 @@
<div class="tab-wrap">
<input type="radio" id="flush_go" name="flush" class="tab" checked>
<label for="flush_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="flush_java" name="flush" class="tab">
<label for="flush_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="flush_js" name="flush" class="tab">
<label for="flush_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="flush_py" name="flush" class="tab">
<label for="flush_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="flush_ruby" name="flush" class="tab">
<label for="flush_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="flush_ts" name="flush" class="tab">
<label for="flush_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="flush_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/flush/main.go#L11-26"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
if err := nc.Publish(&#34;updates&#34;, []byte(&#34;All is Well&#34;)); err != nil {
log.Fatal(err)
}
// Sends a PING and wait for a PONG from the server, up to the given timeout.
// This gives guarantee that the server has processed above message.
if err := nc.FlushTimeout(time.Second); err != nil {
log.Fatal(err)
}
</code></pre>
</div>
<div class="tab__content">
<pre id="flush_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/Flush.java#L13-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
nc.publish(&#34;updates&#34;, &#34;All is Well&#34;.getBytes(StandardCharsets.UTF_8));
nc.flush(Duration.ofSeconds(1)); // Flush the message queue
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="flush_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/publisher_samples.js#L93-103"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({url: &#34;nats://demo.nats.io:4222&#34;});
let start = Date.now();
nc.flush(() =&gt; {
t.log(&#39;round trip completed in&#39;, Date.now() - start, &#39;ms&#39;);
});
nc.publish(&#39;foo&#39;);
// function in flush is optional
nc.flush();
</code></pre>
</div>
<div class="tab__content">
<pre id="flush_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/flush.py#L6-17"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
await nc.publish(&#34;updates&#34;, b&#39;All is Well&#39;)
# Sends a PING and wait for a PONG from the server, up to the given timeout.
# This gives guarantee that the server has processed above message.
await nc.flush(timeout=1)
</code></pre>
</div>
<div class="tab__content">
<pre id="flush_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/flush.rb#L1-18"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
nc.subscribe(&#34;updates&#34;) do |msg|
puts msg
end
nc.publish(&#34;updates&#34;, &#34;All is Well&#34;)
nc.flush do
# Sends a PING and wait for a PONG from the server, up to the given timeout.
# This gives guarantee that the server has processed above message at this point.
end
end
</code></pre>
</div>
<div class="tab__content">
<pre id="flush_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/publisher_samples.ts#L90-108"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;
});
// you can use flush to trigger a function in your
// application once the round-trip to the server finishes
let start = Date.now();
nc.flush(() =&gt; {
t.log(&#39;round trip completed in&#39;, Date.now() - start, &#39;ms&#39;);
});
nc.publish(&#39;foo&#39;);
// another way, simply wait for the promise to resolve
await nc.flush();
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,115 @@
<div class="tab-wrap">
<input type="radio" id="max_payload_go" name="max_payload" class="tab" checked>
<label for="max_payload_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="max_payload_java" name="max_payload" class="tab">
<label for="max_payload_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="max_payload_js" name="max_payload" class="tab">
<label for="max_payload_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="max_payload_py" name="max_payload" class="tab">
<label for="max_payload_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="max_payload_ruby" name="max_payload" class="tab">
<label for="max_payload_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="max_payload_ts" name="max_payload" class="tab">
<label for="max_payload_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="max_payload_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/max_payload/main.go#L10-22"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
mp := nc.MaxPayload()
log.Printf(&#34;Maximum payload is %v bytes&#34;, mp)
// Do something with the max payload
</code></pre>
</div>
<div class="tab__content">
<pre id="max_payload_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/GetMaxPayload.java#L10-17"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
long max = nc.getMaxPayload();
// Do something with the max payload
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="max_payload_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/event_samples.js#L128-139"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect(&#34;nats://demo.nats.io:4222&#34;);
// on node you *must* register an error listener. If not registered
// the library emits an &#39;error&#39; event, the node process will exit.
nc.on(&#39;error&#39;, (err) =&gt; {
t.log(&#39;client got an error:&#39;, err);
});
nc.on(&#39;connect&#39;, () =&gt; {
t.log(nc.info.max_payload);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="max_payload_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/max_payload.py#L6-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
print(&#34;Maximum payload is %d bytes&#34; % nc.max_payload)
# Do something with the max payload.
</code></pre>
</div>
<div class="tab__content">
<pre id="max_payload_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/max_payload.rb#L1-16"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(max_outstanding_pings: 5) do |nc|
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
# Do something with the max_payload
puts &#34;Maximum Payload is #{nc.server_info[:max_payload]} bytes&#34;
end
</code></pre>
</div>
<div class="tab__content">
<pre id="max_payload_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/event_samples.ts#L76-83"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// connect will happen once - the first connect
nc.on(&#39;connect&#39;, (nc: Client, url: string, options: ServerInfo) =&gt; {
// nc is the connection that connected
t.log(&#39;client connected to&#39;, url);
t.log(&#39;max_payload&#39;, options.max_payload);
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,105 @@
<div class="tab-wrap">
<input type="radio" id="no_echo_go" name="no_echo" class="tab" checked>
<label for="no_echo_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="no_echo_java" name="no_echo" class="tab">
<label for="no_echo_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="no_echo_js" name="no_echo" class="tab">
<label for="no_echo_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="no_echo_py" name="no_echo" class="tab">
<label for="no_echo_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="no_echo_ruby" name="no_echo" class="tab">
<label for="no_echo_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="no_echo_ts" name="no_echo" class="tab">
<label for="no_echo_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="no_echo_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/no_echo/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Turn off echo
nc, err := nats.Connect(&#34;demo.nats.io&#34;, nats.NoEcho())
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="no_echo_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectNoEcho.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
noEcho(). // Turn off echo
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="no_echo_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L239-241"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// no_echo is not supported.
</code></pre>
</div>
<div class="tab__content">
<pre id="no_echo_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/no_echo.py#L5-27"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">ncA = NATS()
ncB = NATS()
await ncA.connect(no_echo=True)
await ncB.connect()
async def handler(msg):
# Messages sent by `ncA&#39; will not be received.
print(&#34;[Received] &#34;, msg)
await ncA.subscribe(&#34;greetings&#34;, cb=handler)
await ncA.flush()
await ncA.publish(&#34;greetings&#34;, b&#39;Hello World!&#39;)
await ncB.publish(&#34;greetings&#34;, b&#39;Hello World!&#39;)
# Do something with the connection
await asyncio.sleep(1)
await ncA.drain()
await ncB.drain()
</code></pre>
</div>
<div class="tab__content">
<pre id="no_echo_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/no_echo.rb#L3-7"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">NATS.start(&#34;nats://demo.nats.io:4222&#34;, no_echo: true) do |nc|
# ...
end
</code></pre>
</div>
<div class="tab__content">
<pre id="no_echo_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L222-225"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;, noEcho: true});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,111 @@
<div class="tab-wrap">
<input type="radio" id="ping_20s_go" name="ping_20s" class="tab" checked>
<label for="ping_20s_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="ping_20s_java" name="ping_20s" class="tab">
<label for="ping_20s_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="ping_20s_js" name="ping_20s" class="tab">
<label for="ping_20s_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="ping_20s_py" name="ping_20s" class="tab">
<label for="ping_20s_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="ping_20s_ruby" name="ping_20s" class="tab">
<label for="ping_20s_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="ping_20s_ts" name="ping_20s" class="tab">
<label for="ping_20s_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="ping_20s_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/ping_20s/main.go#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set Ping Interval to 20 seconds
nc, err := nats.Connect(&#34;demo.nats.io&#34;, nats.PingInterval(20*time.Second))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_20s_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectPingTwenty.java#L13-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
pingInterval(Duration.ofSeconds(20)). // Set Ping Interval
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_20s_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L7-12"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
pingInterval: 20*1000, //20s
url: &#34;nats://demo.nats.io:4222&#34;
});
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_20s_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/ping_20s.py#L6-17"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(
servers=[&#34;nats://demo.nats.io:4222&#34;],
# Set Ping Interval to 20 seconds
ping_interval=20,
)
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_20s_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/ping_20s.rb#L1-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(ping_interval: 20) do |nc|
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
# Do something with the connection
end
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_20s_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L5-12"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
pingInterval: 20*2000, //20s
url: &#34;nats://demo.nats.io:4222&#34;
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,118 @@
<div class="tab-wrap">
<input type="radio" id="ping_5_go" name="ping_5" class="tab" checked>
<label for="ping_5_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="ping_5_java" name="ping_5" class="tab">
<label for="ping_5_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="ping_5_js" name="ping_5" class="tab">
<label for="ping_5_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="ping_5_py" name="ping_5" class="tab">
<label for="ping_5_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="ping_5_ruby" name="ping_5" class="tab">
<label for="ping_5_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="ping_5_ts" name="ping_5" class="tab">
<label for="ping_5_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="ping_5_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/ping_5/main.go#L10-25"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">opts := nats.GetDefaultOptions()
opts.Url = &#34;demo.nats.io&#34;
// Set maximum number of PINGs out without getting a PONG back
// before the connection will be disconnected as a stale connection.
opts.MaxPingsOut = 5
nc, err := opts.Connect()
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_5_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ConnectMaxPingFive.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
maxPingsOut(5). // Set max pings in flight
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_5_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L23-28"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
maxPingOut: 5,
url: &#34;nats://demo.nats.io:4222&#34;
});
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_5_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/ping_5.py#L6-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(
servers=[&#34;nats://demo.nats.io:4222&#34;],
# Set maximum number of PINGs out without getting a PONG back
# before the connection will be disconnected as a stale connection.
max_outstanding_pings=5,
ping_interval=1,
)
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_5_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/ping_5s.rb#L1-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(max_outstanding_pings: 5) do |nc|
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
# Do something with the connection
end
</code></pre>
</div>
<div class="tab__content">
<pre id="ping_5_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L17-24"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
maxPingOut: 5,
url: &#34;nats://demo.nats.io:4222&#34;
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,101 @@
<div class="tab-wrap">
<input type="radio" id="publish_bytes_go" name="publish_bytes" class="tab" checked>
<label for="publish_bytes_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="publish_bytes_java" name="publish_bytes" class="tab">
<label for="publish_bytes_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="publish_bytes_js" name="publish_bytes" class="tab">
<label for="publish_bytes_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="publish_bytes_py" name="publish_bytes" class="tab">
<label for="publish_bytes_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="publish_bytes_ruby" name="publish_bytes" class="tab">
<label for="publish_bytes_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="publish_bytes_ts" name="publish_bytes" class="tab">
<label for="publish_bytes_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="publish_bytes_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/publish_bytes/main.go#L10-22"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
if err := nc.Publish(&#34;updates&#34;, []byte(&#34;All is Well&#34;)); err != nil {
log.Fatal(err)
}
// Make sure the message goes through before we close
nc.Flush()
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_bytes_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/PublishBytes.java#L13-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
nc.publish(&#34;updates&#34;, &#34;All is Well&#34;.getBytes(StandardCharsets.UTF_8));
// Make sure the message goes through before we close
nc.flush(Duration.ZERO);
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_bytes_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/publisher_samples.js#L8-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({url: &#34;nats://demo.nats.io:4222&#34;, preserveBuffers: true});
let buf = Buffer.allocUnsafe(12);
buf.fill(&#34;All is well&#34;);
nc.publish(&#39;updates&#39;, buf);
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_bytes_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/publish_bytes.py#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
await nc.publish(&#34;updates&#34;, b&#39;All is Well&#39;)
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_bytes_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/publish_bytes.rb#L1-7"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
nc.publish(&#34;updates&#34;, &#34;All is Well&#34;)
end
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_bytes_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/publisher_samples.ts#L6-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;,
payload: Payload.BINARY
});
let buf = Buffer.allocUnsafe(12);
buf.fill(&#34;All is Well&#34;);
nc.publish(&#39;updates&#39;, buf);
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,134 @@
<div class="tab-wrap">
<input type="radio" id="publish_json_go" name="publish_json" class="tab" checked>
<label for="publish_json_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="publish_json_java" name="publish_json" class="tab">
<label for="publish_json_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="publish_json_js" name="publish_json" class="tab">
<label for="publish_json_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="publish_json_py" name="publish_json" class="tab">
<label for="publish_json_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="publish_json_ruby" name="publish_json" class="tab">
<label for="publish_json_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="publish_json_ts" name="publish_json" class="tab">
<label for="publish_json_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="publish_json_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/publish_json/main.go#L10-34"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
ec, err := nats.NewEncodedConn(nc, nats.JSON_ENCODER)
if err != nil {
nc.Close()
log.Fatal(err)
}
defer ec.Close()
// Define the object
type stock struct {
Symbol string
Price int
}
// Publish the message
if err := ec.Publish(&#34;updates&#34;, &amp;stock{Symbol: &#34;GOOG&#34;, Price: 1200}); err != nil {
log.Fatal(err)
}
// Make sure the message goes through before we close
ec.Flush()
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_json_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/PublishJSON.java#L12-44"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class StockForJsonPub {
public String symbol;
public float price;
}
public class PublishJSON {
public static void main(String[] args) {
try {
Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Create the data object
StockForJsonPub stk = new StockForJsonPub();
stk.symbol=&#34;GOOG&#34;;
stk.price=1200;
// use Gson to encode the object to JSON
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
String json = gson.toJson(stk);
// Publish the message
nc.publish(&#34;updates&#34;, json.getBytes(StandardCharsets.UTF_8));
// Make sure the message goes through before we close
nc.flush(Duration.ZERO);
nc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_json_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/publisher_samples.js#L25-28"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({url: &#34;nats://demo.nats.io:4222&#34;, json: true});
nc.publish(&#39;updates&#39;, {ticker: &#39;GOOG&#39;, price: 1200});
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_json_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/publish_json.py#L7-14"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
await nc.publish(&#34;updates&#34;, json.dumps({&#34;symbol&#34;: &#34;GOOG&#34;, &#34;price&#34;: 1200 }).encode())
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_json_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/publish_json.rb#L1-8"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;json&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
nc.publish(&#34;updates&#34;, {&#34;symbol&#34;: &#34;GOOG&#34;, &#34;price&#34;: 1200}.to_json)
end
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_json_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/publisher_samples.ts#L22-29"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;,
payload: Payload.JSON
});
nc.publish(&#39;updates&#39;, {ticker: &#39;GOOG&#39;, price: 1200});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,186 @@
<div class="tab-wrap">
<input type="radio" id="publish_with_reply_go" name="publish_with_reply" class="tab" checked>
<label for="publish_with_reply_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="publish_with_reply_java" name="publish_with_reply" class="tab">
<label for="publish_with_reply_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="publish_with_reply_js" name="publish_with_reply" class="tab">
<label for="publish_with_reply_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="publish_with_reply_py" name="publish_with_reply" class="tab">
<label for="publish_with_reply_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="publish_with_reply_ruby" name="publish_with_reply" class="tab">
<label for="publish_with_reply_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="publish_with_reply_ts" name="publish_with_reply" class="tab">
<label for="publish_with_reply_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="publish_with_reply_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/publish_with_reply/main.go#L11-43"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Create a unique subject name
uniqueReplyTo := nats.NewInbox()
// Listen for a single response
sub, err := nc.SubscribeSync(uniqueReplyTo)
if err != nil {
log.Fatal(err)
}
// Send the request
if err := nc.PublishRequest(&#34;time&#34;, uniqueReplyTo, nil); err != nil {
log.Fatal(err)
}
// Read the reply
msg, err := sub.NextMsg(time.Second)
if err != nil {
log.Fatal(err)
}
// Use the response
log.Printf(&#34;Reply: %s&#34;, msg.Data)
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_with_reply_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/PublishWithReply.java#L16-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Create a unique subject name
String uniqueReplyTo = NUID.nextGlobal();
// Listen for a single response
Subscription sub = nc.subscribe(uniqueReplyTo);
sub.unsubscribe(1);
// Send the request
nc.publish(&#34;time&#34;, uniqueReplyTo, null);
// Read the reply
Message msg = sub.nextMessage(Duration.ofSeconds(1));
// Use the response
System.out.println(new String(msg.getData(), StandardCharsets.UTF_8));
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_with_reply_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/publisher_samples.js#L41-57"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// set up a subscription to process the request
nc.subscribe(&#39;time&#39;, (msg, reply) =&gt; {
if(reply) {
nc.publish(reply, new Date().toLocaleTimeString());
}
});
// create a subscription subject that the responding send replies to
let inbox = NATS.createInbox();
nc.subscribe(inbox, {max: 1}, (msg) =&gt; {
t.log(&#39;the time is&#39;, msg);
nc.close();
});
nc.publish(&#39;time&#39;, &#34;&#34;, inbox);
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_with_reply_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/publish_with_reply.py#L8-27"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
future = asyncio.Future()
async def sub(msg):
nonlocal future
future.set_result(msg)
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
await nc.subscribe(&#34;time&#34;, cb=sub)
unique_reply_to = new_inbox()
await nc.publish_request(&#34;time&#34;, unique_reply_to, b&#39;&#39;)
# Use the response
msg = await asyncio.wait_for(future, 1)
print(&#34;Reply:&#34;, msg)
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_with_reply_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/publish_with_reply.rb#L1-22"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
Fiber.new do
f = Fiber.current
nc.subscribe(&#34;time&#34;) do |msg, reply|
f.resume msg
end
nc.publish(&#34;time&#34;, &#39;example&#39;, NATS.create_inbox)
# Use the response
msg = Fiber.yield
puts &#34;Reply: #{msg}&#34;
end.resume
end
</code></pre>
</div>
<div class="tab__content">
<pre id="publish_with_reply_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/publisher_samples.ts#L41-64"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// set up a subscription to process the request
await nc.subscribe(&#39;time&#39;, (err, msg) =&gt; {
if (err) {
// this example is running inside of a promise
reject();
return;
}
if (msg.reply) {
nc.publish(msg.reply, new Date().toLocaleTimeString());
}
});
// create a subscription subject that the responding send replies to
let inbox = createInbox();
await nc.subscribe(inbox, (err, msg) =&gt; {
t.log(&#39;the time is&#39;, msg.data);
// this example is running inside of a promise
nc.close();
resolve();
}, {max: 1});
nc.publish(&#39;time&#39;, &#34;&#34;, inbox);
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,106 @@
<div class="tab-wrap">
<input type="radio" id="reconnect_10s_go" name="reconnect_10s" class="tab" checked>
<label for="reconnect_10s_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="reconnect_10s_java" name="reconnect_10s" class="tab">
<label for="reconnect_10s_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="reconnect_10s_js" name="reconnect_10s" class="tab">
<label for="reconnect_10s_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="reconnect_10s_py" name="reconnect_10s" class="tab">
<label for="reconnect_10s_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="reconnect_10s_ruby" name="reconnect_10s" class="tab">
<label for="reconnect_10s_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="reconnect_10s_ts" name="reconnect_10s" class="tab">
<label for="reconnect_10s_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="reconnect_10s_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/reconnect_10s/main.go#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set reconnect interval to 10 seconds
nc, err := nats.Connect(&#34;demo.nats.io&#34;, nats.ReconnectWait(10*time.Second))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10s_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ReconnectTenSeconds.java#L13-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
reconnectWait(Duration.ofSeconds(10)). // Set Reconnect Wait
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10s_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/reconnect_samples.js#L42-47"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
reconnectTimeWait: 10 * 1000, //10s
servers: [&#34;nats://demo.nats.io:4222&#34;]
});
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10s_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/reconnect_10s.py#L5-16"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(
servers=[&#34;nats://demo.nats.io:4222&#34;],
reconnect_time_wait=10,
)
# Do something with the connection
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10s_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/reconnect_10s.rb#L1-10"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers: [&#34;nats://127.0.0.1:1222&#34;, &#34;nats://127.0.0.1:1223&#34;, &#34;nats://127.0.0.1:1224&#34;], reconnect_time_wait: 10) do |nc|
# Do something with the connection
# Close the connection
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10s_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/reconnect_samples.ts#L33-40"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
reconnectTimeWait: 10*1000, //10s
servers: [&#34;nats://demo.nats.io:4222&#34;]
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,106 @@
<div class="tab-wrap">
<input type="radio" id="reconnect_10x_go" name="reconnect_10x" class="tab" checked>
<label for="reconnect_10x_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="reconnect_10x_java" name="reconnect_10x" class="tab">
<label for="reconnect_10x_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="reconnect_10x_js" name="reconnect_10x" class="tab">
<label for="reconnect_10x_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="reconnect_10x_py" name="reconnect_10x" class="tab">
<label for="reconnect_10x_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="reconnect_10x_ruby" name="reconnect_10x" class="tab">
<label for="reconnect_10x_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="reconnect_10x_ts" name="reconnect_10x" class="tab">
<label for="reconnect_10x_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="reconnect_10x_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/reconnect_10x/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set max reconnects attempts
nc, err := nats.Connect(&#34;demo.nats.io&#34;, nats.MaxReconnects(10))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10x_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ReconnectTenTimes.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
maxReconnects(10). // Set max reconnect attempts
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10x_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/reconnect_samples.js#L58-63"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
maxReconnectAttempts: 10,
servers: [&#34;nats://demo.nats.io:4222&#34;]
});
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10x_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/reconnect_10x.py#L5-16"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(
servers=[&#34;nats://demo.nats.io:4222&#34;],
max_reconnect_attempts=10,
)
# Do something with the connection
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10x_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/reconnect_10x.rb#L1-10"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers: [&#34;nats://127.0.0.1:1222&#34;, &#34;nats://127.0.0.1:1223&#34;, &#34;nats://127.0.0.1:1224&#34;], max_reconnect_attempts: 10) do |nc|
# Do something with the connection
# Close the connection
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_10x_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/reconnect_samples.ts#L45-52"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
maxReconnectAttempts: 10,
servers: [&#34;nats://demo.nats.io:4222&#34;]
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,82 @@
<div class="tab-wrap">
<input type="radio" id="reconnect_5mb_go" name="reconnect_5mb" class="tab" checked>
<label for="reconnect_5mb_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="reconnect_5mb_java" name="reconnect_5mb" class="tab">
<label for="reconnect_5mb_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="reconnect_5mb_js" name="reconnect_5mb" class="tab">
<label for="reconnect_5mb_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="reconnect_5mb_py" name="reconnect_5mb" class="tab">
<label for="reconnect_5mb_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="reconnect_5mb_ruby" name="reconnect_5mb" class="tab">
<label for="reconnect_5mb_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="reconnect_5mb_ts" name="reconnect_5mb" class="tab">
<label for="reconnect_5mb_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="reconnect_5mb_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/reconnect_5mb/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set reconnect buffer size in bytes (5 MB)
nc, err := nats.Connect(&#34;demo.nats.io&#34;, nats.ReconnectBufSize(5*1024*1024))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_5mb_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ReconnectFiveMB.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
reconnectBufferSize(5 * 1024 * 1024). // Set buffer in bytes
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_5mb_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/reconnect_samples.js#L94-96"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// Reconnect buffer size is not configurable on node-nats
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_5mb_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/notapplicable.txt#L1-3"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python"># Asyncio NATS client currentply does not implement a reconnect buffer
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_5mb_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/notapplicable.txt#L1-3"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># There is currently no reconnect pending buffer as part of the Ruby NATS client.
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_5mb_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/reconnect_samples.ts#L76-78"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// Reconnect buffer size is not configurable on ts-nats
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,142 @@
<div class="tab-wrap">
<input type="radio" id="reconnect_event_go" name="reconnect_event" class="tab" checked>
<label for="reconnect_event_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="reconnect_event_java" name="reconnect_event" class="tab">
<label for="reconnect_event_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="reconnect_event_js" name="reconnect_event" class="tab">
<label for="reconnect_event_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="reconnect_event_py" name="reconnect_event" class="tab">
<label for="reconnect_event_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="reconnect_event_ruby" name="reconnect_event" class="tab">
<label for="reconnect_event_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="reconnect_event_ts" name="reconnect_event" class="tab">
<label for="reconnect_event_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="reconnect_event_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/reconnect_event/main.go#L10-28"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Connection event handlers are invoked asynchronously
// and the state of the connection may have changed when
// the callback is invoked.
nc, err := nats.Connect(&#34;demo.nats.io&#34;,
nats.DisconnectHandler(func(nc *nats.Conn) {
// handle disconnect event
}),
nats.ReconnectHandler(func(nc *nats.Conn) {
// handle reconnect event
}))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_event_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ReconnectEvents.java#L12-28"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
connectionListener((conn, type) -&gt; {
if (type == Events.RECONNECTED) {
// handle reconnected
} else if (type == Events.DISCONNECTED) {
// handle disconnected, wait for reconnect
}
}).
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_event_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/reconnect_samples.js#L74-83"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
maxReconnectAttempts: 10,
servers: [&#34;nats://demo.nats.io:4222&#34;]
});
nc.on(&#39;reconnect&#39;, (c) =&gt; {
console.log(&#39;reconnected&#39;);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_event_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/reconnect_event.py#L6-25"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
async def disconnected_cb():
print(&#34;Got disconnected!&#34;)
async def reconnected_cb():
# See who we are connected to on reconnect.
print(&#34;Got reconnected to {url}&#34;.format(url=nc.connected_url.netloc))
await nc.connect(
servers=[&#34;nats://demo.nats.io:4222&#34;],
reconnect_time_wait=10,
reconnected_cb=reconnected_cb,
disconnected_cb=disconnected_cb,
)
# Do something with the connection.
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_event_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/reconnect_event.rb#L1-14"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers: [&#34;nats://127.0.0.1:1222&#34;, &#34;nats://127.0.0.1:1223&#34;, &#34;nats://127.0.0.1:1224&#34;]) do |nc|
# Do something with the connection
nc.on_reconnect do
puts &#34;Got reconnected to #{nc.connected_server}&#34;
end
nc.on_disconnect do |reason|
puts &#34;Got disconnected! #{reason}&#34;
end
end
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_event_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/reconnect_samples.ts#L57-70"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
maxReconnectAttempts: 10,
servers: [&#34;nats://demo.nats.io:4222&#34;]
});
// first argument is the connection (same as nc in this case)
// second argument is the url of the server where the client
// connected
nc.on(&#39;reconnect&#39;, (conn, server) =&gt; {
console.log(&#39;reconnected to&#39;, server);
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,118 @@
<div class="tab-wrap">
<input type="radio" id="reconnect_no_random_go" name="reconnect_no_random" class="tab" checked>
<label for="reconnect_no_random_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="reconnect_no_random_java" name="reconnect_no_random" class="tab">
<label for="reconnect_no_random_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="reconnect_no_random_js" name="reconnect_no_random" class="tab">
<label for="reconnect_no_random_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="reconnect_no_random_py" name="reconnect_no_random" class="tab">
<label for="reconnect_no_random_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="reconnect_no_random_ruby" name="reconnect_no_random" class="tab">
<label for="reconnect_no_random_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="reconnect_no_random_ts" name="reconnect_no_random" class="tab">
<label for="reconnect_no_random_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="reconnect_no_random_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/reconnect_no_random/main.go#L11-25"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">servers := []string{&#34;nats://localhost:1222&#34;,
&#34;nats://localhost:1223&#34;,
&#34;nats://localhost:1224&#34;,
}
nc, err := nats.Connect(strings.Join(servers, &#34;,&#34;), nats.DontRandomize())
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_no_random_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ReconnectNoRandom.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
noRandomize(). // Disable reconnect shuffle
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_no_random_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/reconnect_samples.js#L6-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
noRandomize: false,
servers: [&#34;nats://127.0.0.1:4443&#34;,
&#34;nats://demo.nats.io:4222&#34;
]
});
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_no_random_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/reconnect_no_random.py#L5-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(
servers=[
&#34;nats://demo.nats.io:1222&#34;,
&#34;nats://demo.nats.io:1223&#34;,
&#34;nats://demo.nats.io:1224&#34;
],
dont_randomize=True,
)
# Do something with the connection
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_no_random_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/reconnect_no_random.rb#L1-10"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers: [&#34;nats://127.0.0.1:1222&#34;, &#34;nats://127.0.0.1:1223&#34;, &#34;nats://127.0.0.1:1224&#34;], dont_randomize_servers: true) do |nc|
# Do something with the connection
# Close the connection
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_no_random_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/reconnect_samples.ts#L6-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
noRandomize: false,
servers: [&#34;nats://127.0.0.1:4443&#34;,
&#34;nats://demo.nats.io:4222&#34;
]
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,110 @@
<div class="tab-wrap">
<input type="radio" id="reconnect_none_go" name="reconnect_none" class="tab" checked>
<label for="reconnect_none_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="reconnect_none_java" name="reconnect_none" class="tab">
<label for="reconnect_none_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="reconnect_none_js" name="reconnect_none" class="tab">
<label for="reconnect_none_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="reconnect_none_py" name="reconnect_none" class="tab">
<label for="reconnect_none_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="reconnect_none_ruby" name="reconnect_none" class="tab">
<label for="reconnect_none_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="reconnect_none_ts" name="reconnect_none" class="tab">
<label for="reconnect_none_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="reconnect_none_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/reconnect_none/main.go#L10-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Disable reconnect attempts
nc, err := nats.Connect(&#34;demo.nats.io&#34;, nats.NoReconnect())
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_none_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ReconnectNone.java#L11-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
noReconnect(). // Disable reconnect attempts
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_none_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/reconnect_samples.js#L25-30"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
reconnect: false,
servers: [&#34;nats://demo.nats.io:4222&#34;]
});
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_none_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/reconnect_none.py#L5-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(
servers=[
&#34;nats://demo.nats.io:1222&#34;,
&#34;nats://demo.nats.io:1223&#34;,
&#34;nats://demo.nats.io:1224&#34;
],
allow_reconnect=False,
)
# Do something with the connection
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_none_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/reconnect_none.rb#L1-10"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers: [&#34;nats://127.0.0.1:1222&#34;, &#34;nats://127.0.0.1:1223&#34;, &#34;nats://127.0.0.1:1224&#34;], reconnect: false) do |nc|
# Do something with the connection
# Close the connection
nc.close
end
</code></pre>
</div>
<div class="tab__content">
<pre id="reconnect_none_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/reconnect_samples.ts#L20-27"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// will throw an exception if connection fails
let nc = await connect({
reconnect: false,
servers: [&#34;nats://demo.nats.io:4222&#34;]
});
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,125 @@
<div class="tab-wrap">
<input type="radio" id="request_reply_go" name="request_reply" class="tab" checked>
<label for="request_reply_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="request_reply_java" name="request_reply" class="tab">
<label for="request_reply_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="request_reply_js" name="request_reply" class="tab">
<label for="request_reply_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="request_reply_py" name="request_reply" class="tab">
<label for="request_reply_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="request_reply_ruby" name="request_reply" class="tab">
<label for="request_reply_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="request_reply_ts" name="request_reply" class="tab">
<label for="request_reply_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="request_reply_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/request_reply/main.go#L11-29"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Send the request
msg, err := nc.Request(&#34;time&#34;, nil, time.Second)
if err != nil {
log.Fatal(err)
}
// Use the response
log.Printf(&#34;Reply: %s&#34;, msg.Data)
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="request_reply_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/RequestReply.java#L14-25"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Send the request
Message msg = nc.request(&#34;time&#34;, null, Duration.ofSeconds(1));
// Use the response
System.out.println(new String(msg.getData(), StandardCharsets.UTF_8));
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="request_reply_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/publisher_samples.js#L77-82"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.requestOne(&#39;time&#39;, (msg) =&gt; {
t.log(&#39;the time is&#39;, msg);
nc.close();
});
</code></pre>
</div>
<div class="tab__content">
<pre id="request_reply_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/request_reply.py#L8-25"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
async def sub(msg):
await nc.publish(msg.reply, b&#39;response&#39;)
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
await nc.subscribe(&#34;time&#34;, cb=sub)
# Send the request
try:
msg = await nc.request(&#34;time&#34;, b&#39;&#39;, timeout=1)
# Use the response
print(&#34;Reply:&#34;, msg)
except asyncio.TimeoutError:
print(&#34;Timed out waiting for response&#34;)
</code></pre>
</div>
<div class="tab__content">
<pre id="request_reply_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/request_reply.rb#L1-17"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
nc.subscribe(&#34;time&#34;) do |msg, reply|
nc.publish(reply, &#34;response&#34;)
end
Fiber.new do
# Use the response
msg = nc.request(&#34;time&#34;, &#34;&#34;)
puts &#34;Reply: #{msg}&#34;
end.resume
end
</code></pre>
</div>
<div class="tab__content">
<pre id="request_reply_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/publisher_samples.ts#L81-85"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let msg = await nc.request(&#39;time&#39;, 1000);
t.log(&#39;the time is&#39;, msg.data);
nc.close();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,111 @@
<div class="tab-wrap">
<input type="radio" id="servers_added_go" name="servers_added" class="tab" checked>
<label for="servers_added_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="servers_added_java" name="servers_added" class="tab">
<label for="servers_added_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="servers_added_js" name="servers_added" class="tab">
<label for="servers_added_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="servers_added_py" name="servers_added" class="tab">
<label for="servers_added_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="servers_added_ruby" name="servers_added" class="tab">
<label for="servers_added_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="servers_added_ts" name="servers_added" class="tab">
<label for="servers_added_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="servers_added_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/servers_added/main.go#L10-25"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Be notified if a new server joins the cluster.
// Print all the known servers and the only the ones that were discovered.
nc, err := nats.Connect(&#34;demo.nats.io&#34;,
nats.DiscoveredServersHandler(func(nc *nats.Conn) {
log.Printf(&#34;Known servers: %v\n&#34;, nc.Servers())
log.Printf(&#34;Discovered servers: %v\n&#34;, nc.DiscoveredServers())
}))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="servers_added_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/ListenForNewServers.java#L8-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class ServersAddedListener implements ConnectionListener {
public void connectionEvent(Connection nc, Events event) {
if (event == Events.DISCOVERED_SERVERS) {
for (String server : nc.getServers()) {
System.out.println(&#34;Known server: &#34;&#43;server);
}
}
}
}
public class ListenForNewServers {
public static void main(String[] args) {
try {
Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
connectionListener(new ServersAddedListener()). // Set the listener
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</code></pre>
</div>
<div class="tab__content">
<pre id="servers_added_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/event_samples.js#L56-61"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect(&#34;nats://demo.nats.io:4222&#34;);
nc.on(&#39;serversDiscovered&#39;, (urls) =&gt; {
t.log(&#39;serversDiscovered&#39;, urls);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="servers_added_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/notapplicable.txt#L13-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python"># Asyncio NATS client does not support discovered servers handler right now
</code></pre>
</div>
<div class="tab__content">
<pre id="servers_added_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/notapplicable.txt#L25-27"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># The Ruby NATS client does not support discovered servers handler right now
</code></pre>
</div>
<div class="tab__content">
<pre id="servers_added_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/event_samples.ts#L36-40"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.on(&#39;serversChanged&#39;, (ce) =&gt; {
t.log(&#39;servers changed\n&#39;, &#39;added: &#39;,ce.added, &#39;removed:&#39;, ce.removed);
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,154 @@
<div class="tab-wrap">
<input type="radio" id="slow_listener_go" name="slow_listener" class="tab" checked>
<label for="slow_listener_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="slow_listener_java" name="slow_listener" class="tab">
<label for="slow_listener_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="slow_listener_js" name="slow_listener" class="tab">
<label for="slow_listener_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="slow_listener_py" name="slow_listener" class="tab">
<label for="slow_listener_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="slow_listener_ruby" name="slow_listener" class="tab">
<label for="slow_listener_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="slow_listener_ts" name="slow_listener" class="tab">
<label for="slow_listener_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="slow_listener_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/slow_listener/main.go#L10-27"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">// Set the callback that will be invoked when an asynchronous error occurs.
nc, err := nats.Connect(&#34;demo.nats.io&#34;,
nats.ErrorHandler(func(nc *nats.Conn, sub *nats.Subscription, err error) {
if err == nats.ErrSlowConsumer {
dropped, _ := sub.Dropped()
log.Printf(&#34;Slow consumer on subject %s dropped %d messages\n&#34;,
sub.Subject, dropped)
}
}))
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Do something with the connection
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_listener_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SlowConsumerListener.java#L9-43"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class SlowConsumerReporter implements ErrorListener {
public void errorOccurred(Connection conn, String error)
{
}
public void exceptionOccurred(Connection conn, Exception exp) {
}
// Detect slow consumers
public void slowConsumerDetected(Connection conn, Consumer consumer) {
// Get the dropped count
System.out.println(&#34;A slow consumer dropped messages: &#34;&#43; consumer.getDroppedCount());
}
}
public class SlowConsumerListener {
public static void main(String[] args) {
try {
Options options = new Options.Builder().
server(&#34;nats://demo.nats.io:4222&#34;).
errorListener(new SlowConsumerReporter()). // Set the listener
build();
Connection nc = Nats.connect(options);
// Do something with the connection
nc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_listener_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L114-116"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// slow consumer detection is not configurable on node-nats
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_listener_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/slow_listener.py#L7-50"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">
nc = NATS()
async def error_cb(e):
if type(e) is nats.aio.errors.ErrSlowConsumer:
print(&#34;Slow consumer error, unsubscribing from handling further messages...&#34;)
await nc.unsubscribe(e.sid)
await nc.connect(
servers=[&#34;nats://demo.nats.io:4222&#34;],
error_cb=error_cb,
)
msgs = []
future = asyncio.Future()
async def cb(msg):
nonlocal msgs
nonlocal future
print(msg)
msgs.append(msg)
if len(msgs) == 3:
# Head of line blocking on other messages caused
# by single message proccesing taking long...
await asyncio.sleep(1)
await nc.subscribe(&#34;updates&#34;, cb=cb, pending_msgs_limit=5)
for i in range(0, 10):
await nc.publish(&#34;updates&#34;, &#34;msg #{}&#34;.format(i).encode())
await asyncio.sleep(0)
try:
await asyncio.wait_for(future, 1)
except asyncio.TimeoutError:
pass
for msg in msgs:
print(&#34;[Received]&#34;, msg)
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_listener_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/notapplicable.txt#L21-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># The Ruby NATS client currently does not have option to customize slow consumer limits per sub.
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_listener_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L82-84"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// slow consumer detection is not configurable on ts-nats
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,121 @@
<div class="tab-wrap">
<input type="radio" id="slow_pending_limits_go" name="slow_pending_limits" class="tab" checked>
<label for="slow_pending_limits_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="slow_pending_limits_java" name="slow_pending_limits" class="tab">
<label for="slow_pending_limits_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="slow_pending_limits_js" name="slow_pending_limits" class="tab">
<label for="slow_pending_limits_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="slow_pending_limits_py" name="slow_pending_limits" class="tab">
<label for="slow_pending_limits_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="slow_pending_limits_ruby" name="slow_pending_limits" class="tab">
<label for="slow_pending_limits_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="slow_pending_limits_ts" name="slow_pending_limits" class="tab">
<label for="slow_pending_limits_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="slow_pending_limits_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/sub_pending_limits/main.go#L10-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Subscribe
sub1, err := nc.Subscribe(&#34;updates&#34;, func(m *nats.Msg) {})
if err != nil {
log.Fatal(err)
}
// Set limits of 1000 messages or 5MB, whichever comes first
sub1.SetPendingLimits(1000, 5*1024*1024)
// Subscribe
sub2, err := nc.Subscribe(&#34;updates&#34;, func(m *nats.Msg) {})
if err != nil {
log.Fatal(err)
}
// Set no limits for this subscription
sub2.SetPendingLimits(-1, -1)
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_pending_limits_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SetPendingLimits.java#L12-32"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
Dispatcher d = nc.createDispatcher((msg) -&gt; {
// do something
});
d.subscribe(&#34;updates&#34;);
d.setPendingLimits(1_000, 5 * 1024 * 1024); // Set limits on a dispatcher
// Subscribe
Subscription sub = nc.subscribe(&#34;updates&#34;);
sub.setPendingLimits(1_000, 5 * 1024 * 1024); // Set limits on a subscription
// Do something
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_pending_limits_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/options_samples.js#L107-109"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// slow pending limits are not configurable on node-nats
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_pending_limits_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/sub_pending_limits.py#L6-20"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
future = asyncio.Future()
async def cb(msg):
nonlocal future
future.set_result(msg)
# Set limits of 1000 messages or 5MB
await nc.subscribe(&#34;updates&#34;, cb=cb, pending_bytes_limit=5*1024*1024, pending_msgs_limit=1000)
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_pending_limits_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/notapplicable.txt#L17-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># The Ruby NATS client currently does not have option to customize slow consumer limits per sub.
</code></pre>
</div>
<div class="tab__content">
<pre id="slow_pending_limits_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/options_samples.ts#L75-77"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// slow pending limits are not configurable on ts-nats
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,195 @@
<div class="tab-wrap">
<input type="radio" id="subscribe_arrow_go" name="subscribe_arrow" class="tab" checked>
<label for="subscribe_arrow_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="subscribe_arrow_java" name="subscribe_arrow" class="tab">
<label for="subscribe_arrow_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="subscribe_arrow_js" name="subscribe_arrow" class="tab">
<label for="subscribe_arrow_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="subscribe_arrow_py" name="subscribe_arrow" class="tab">
<label for="subscribe_arrow_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="subscribe_arrow_ruby" name="subscribe_arrow" class="tab">
<label for="subscribe_arrow_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="subscribe_arrow_ts" name="subscribe_arrow" class="tab">
<label for="subscribe_arrow_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="subscribe_arrow_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/subscribe_arrow/main.go#L11-35"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Use a WaitGroup to wait for 4 messages to arrive
wg := sync.WaitGroup{}
wg.Add(4)
// Subscribe
if _, err := nc.Subscribe(&#34;time.&gt;&#34;, func(m *nats.Msg) {
log.Printf(&#34;%s: %s&#34;, m.Subject, m.Data)
wg.Done()
}); err != nil {
log.Fatal(err)
}
// Wait for the 4 messages to come in
wg.Wait()
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_arrow_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SubscribeArrow.java#L14-36"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Use a latch to wait for 4 messages to arrive
CountDownLatch latch = new CountDownLatch(4);
// Create a dispatcher and inline message handler
Dispatcher d = nc.createDispatcher((msg) -&gt; {
String subject = msg.getSubject();
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(subject &#43; &#34;: &#34; &#43; str);
latch.countDown();
});
// Subscribe
d.subscribe(&#34;time.&gt;&#34;);
// Wait for messages to come in
latch.await();
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_arrow_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L176-199"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.subscribe(&#39;time.&gt;&#39;, (msg, reply, subject) =&gt; {
// converting timezones correctly in node requires a library
// this doesn&#39;t take into account *many* things.
let time = &#34;&#34;;
switch (subject) {
case &#39;time.us.east&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/New_York&#34;});
break;
case &#39;time.us.central&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Chicago&#34;});
break;
case &#39;time.us.mountain&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Denver&#34;});
break;
case &#39;time.us.west&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Los_Angeles&#34;});
break;
default:
time = &#34;I don&#39;t know what you are talking about Willis&#34;;
}
t.log(subject, time);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_arrow_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/subscribe_arrow.py#L6-30"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
# Use queue to wait for 4 messages to arrive
queue = asyncio.Queue()
async def cb(msg):
await queue.put(msg)
await nc.subscribe(&#34;time.&gt;&#34;, cb=cb)
# Send 2 messages and wait for them to come in
await nc.publish(&#34;time.A.east&#34;, b&#39;A&#39;)
await nc.publish(&#34;time.B.east&#34;, b&#39;B&#39;)
await nc.publish(&#34;time.C.west&#34;, b&#39;C&#39;)
await nc.publish(&#34;time.D.west&#34;, b&#39;D&#39;)
for i in range(0, 4):
msg = await queue.get()
print(&#34;Msg:&#34;, msg)
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_arrow_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/subscribe_arrow.rb#L1-26"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
Fiber.new do
f = Fiber.current
nc.subscribe(&#34;time.&gt;&#34;) do |msg, reply|
f.resume Time.now.to_f
end
nc.publish(&#34;time.A.east&#34;, &#34;A&#34;)
nc.publish(&#34;time.B.east&#34;, &#34;B&#34;)
nc.publish(&#34;time.C.west&#34;, &#34;C&#34;)
nc.publish(&#34;time.D.west&#34;, &#34;D&#34;)
# Use the response
4.times do
msg = Fiber.yield
puts &#34;Msg: #{msg}&#34;
end
end.resume
end
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_arrow_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L156-179"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">await nc.subscribe(&#39;time.&gt;&#39;, (err, msg) =&gt; {
// converting timezones correctly in node requires a library
// this doesn&#39;t take into account *many* things.
let time = &#34;&#34;;
switch (msg.subject) {
case &#39;time.us.east&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/New_York&#34;});
break;
case &#39;time.us.central&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Chicago&#34;});
break;
case &#39;time.us.mountain&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Denver&#34;});
break;
case &#39;time.us.west&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Los_Angeles&#34;});
break;
default:
time = &#34;I don&#39;t know what you are talking about Willis&#34;;
}
t.log(msg.subject, time);
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,140 @@
<div class="tab-wrap">
<input type="radio" id="subscribe_async_go" name="subscribe_async" class="tab" checked>
<label for="subscribe_async_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="subscribe_async_java" name="subscribe_async" class="tab">
<label for="subscribe_async_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="subscribe_async_js" name="subscribe_async" class="tab">
<label for="subscribe_async_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="subscribe_async_py" name="subscribe_async" class="tab">
<label for="subscribe_async_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="subscribe_async_ruby" name="subscribe_async" class="tab">
<label for="subscribe_async_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="subscribe_async_ts" name="subscribe_async" class="tab">
<label for="subscribe_async_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="subscribe_async_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/subscribe_async/main.go#L11-34"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Use a WaitGroup to wait for a message to arrive
wg := sync.WaitGroup{}
wg.Add(1)
// Subscribe
if _, err := nc.Subscribe(&#34;updates&#34;, func(m *nats.Msg) {
wg.Done()
}); err != nil {
log.Fatal(err)
}
// Wait for a message to come in
wg.Wait()
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_async_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SubscribeAsync.java#L14-35"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Use a latch to wait for a message to arrive
CountDownLatch latch = new CountDownLatch(1);
// Create a dispatcher and inline message handler
Dispatcher d = nc.createDispatcher((msg) -&gt; {
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(str);
latch.countDown();
});
// Subscribe
d.subscribe(&#34;updates&#34;);
// Wait for a message to come in
latch.await();
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_async_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L9-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.subscribe(&#34;updates&#34;, (msg) =&gt; {
t.log(msg);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_async_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/subscribe_async.py#L6-24"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
future = asyncio.Future()
async def cb(msg):
nonlocal future
future.set_result(msg)
await nc.subscribe(&#34;updates&#34;, cb=cb)
await nc.publish(&#34;updates&#34;, b&#39;All is Well&#39;)
await nc.flush()
# Wait for message to come in
msg = await asyncio.wait_for(future, 1)
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_async_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/subscribe_async.rb#L1-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
nc.subscribe(&#34;updates&#34;) do |msg|
puts msg
nc.close
end
nc.publish(&#34;updates&#34;, &#34;All is Well&#34;)
end
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_async_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L9-17"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.subscribe(&#34;updates&#34;, (err, msg) =&gt; {
if(err) {
console.log(&#39;error&#39;, err);
} else {
t.log(msg.data);
}
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,189 @@
<div class="tab-wrap">
<input type="radio" id="subscribe_json_go" name="subscribe_json" class="tab" checked>
<label for="subscribe_json_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="subscribe_json_java" name="subscribe_json" class="tab">
<label for="subscribe_json_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="subscribe_json_js" name="subscribe_json" class="tab">
<label for="subscribe_json_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="subscribe_json_py" name="subscribe_json" class="tab">
<label for="subscribe_json_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="subscribe_json_ruby" name="subscribe_json" class="tab">
<label for="subscribe_json_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="subscribe_json_ts" name="subscribe_json" class="tab">
<label for="subscribe_json_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="subscribe_json_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/subscribe_json/main.go#L11-45"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
ec, err := nats.NewEncodedConn(nc, nats.JSON_ENCODER)
if err != nil {
log.Fatal(err)
}
defer ec.Close()
// Define the object
type stock struct {
Symbol string
Price int
}
wg := sync.WaitGroup{}
wg.Add(1)
// Subscribe
if _, err := ec.Subscribe(&#34;updates&#34;, func(s *stock) {
log.Printf(&#34;Stock: %s - Price: %v&#34;, s.Symbol, s.Price)
wg.Done()
}); err != nil {
log.Fatal(err)
}
// Wait for a message to come in
wg.Wait()
// Close the connection
ec.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_json_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SubscribeJSON.java#L12-57"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">class StockForJsonSub {
public String symbol;
public float price;
public String toString() {
return symbol &#43; &#34; is at &#34; &#43; price;
}
}
public class SubscribeJSON {
public static void main(String[] args) {
try {
Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Use a latch to wait for 10 messages to arrive
CountDownLatch latch = new CountDownLatch(10);
// Create a dispatcher and inline message handler
Dispatcher d = nc.createDispatcher((msg) -&gt; {
Gson gson = new Gson();
String json = new String(msg.getData(), StandardCharsets.UTF_8);
StockForJsonSub stk = gson.fromJson(json, StockForJsonSub.class);
// Use the object
System.out.println(stk);
latch.countDown();
});
// Subscribe
d.subscribe(&#34;updates&#34;);
// Wait for a message to come in
latch.await();
// Close the connection
nc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_json_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L76-88"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = NATS.connect({
url: &#34;nats://demo.nats.io:4222&#34;,
json: true
});
nc.subscribe(&#39;updates&#39;, (msg) =&gt; {
if(msg &amp;&amp; msg.ticker === &#39;TSLA&#39;) {
t.log(&#39;got message:&#39;, msg);
}
});
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_json_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/subscribe_json.py#L1-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">import asyncio
import json
from nats.aio.client import Client as NATS
from nats.aio.errors import ErrTimeout
async def run(loop):
nc = NATS()
await nc.connect(servers=[&#34;nats://127.0.0.1:4222&#34;], loop=loop)
async def message_handler(msg):
data = json.loads(msg.data.decode())
print(data)
sid = await nc.subscribe(&#34;updates&#34;, cb=message_handler)
await nc.flush()
await nc.auto_unsubscribe(sid, 2)
await nc.publish(&#34;updates&#34;, json.dumps({&#34;symbol&#34;: &#34;GOOG&#34;, &#34;price&#34;: 1200 }).encode())
await asyncio.sleep(1, loop=loop)
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_json_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/subscribe_json.rb#L1-13"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;json&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
nc.subscribe(&#34;updates&#34;) do |msg|
m = JSON.parse(msg)
# {&#34;symbol&#34;=&gt;&#34;GOOG&#34;, &#34;price&#34;=&gt;12}
p m
end
end
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_json_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L70-80"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">let nc = await connect({
url: &#34;nats://demo.nats.io:4222&#34;,
payload: Payload.JSON
});
nc.subscribe(&#39;updates&#39;, (err, msg) =&gt; {
t.log(&#39;got message:&#39;, msg.data ? msg.data : &#34;no payload&#34;);
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,143 @@
<div class="tab-wrap">
<input type="radio" id="subscribe_queue_go" name="subscribe_queue" class="tab" checked>
<label for="subscribe_queue_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="subscribe_queue_java" name="subscribe_queue" class="tab">
<label for="subscribe_queue_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="subscribe_queue_js" name="subscribe_queue" class="tab">
<label for="subscribe_queue_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="subscribe_queue_py" name="subscribe_queue" class="tab">
<label for="subscribe_queue_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="subscribe_queue_ruby" name="subscribe_queue" class="tab">
<label for="subscribe_queue_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="subscribe_queue_ts" name="subscribe_queue" class="tab">
<label for="subscribe_queue_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="subscribe_queue_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/subscribe_queue/main.go#L11-34"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Use a WaitGroup to wait for 10 messages to arrive
wg := sync.WaitGroup{}
wg.Add(10)
// Create a queue subscription on &#34;updates&#34; with queue name &#34;workers&#34;
if _, err := nc.QueueSubscribe(&#34;updates&#34;, &#34;worker&#34;, func(m *nats.Msg) {
wg.Done()
}); err != nil {
log.Fatal(err)
}
// Wait for messages to come in
wg.Wait()
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_queue_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SubscribeQueue.java#L14-35"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Use a latch to wait for 10 messages to arrive
CountDownLatch latch = new CountDownLatch(10);
// Create a dispatcher and inline message handler
Dispatcher d = nc.createDispatcher((msg) -&gt; {
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(str);
latch.countDown();
});
// Subscribe
d.subscribe(&#34;updates&#34;, &#34;workers&#34;);
// Wait for a message to come in
latch.await();
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_queue_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L217-221"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.subscribe(&#39;updates&#39;, {queue: &#34;workers&#34;}, (msg) =&gt; {
t.log(&#39;worker got message&#39;, msg);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_queue_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/subscribe_queue.py#L6-23"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
future = asyncio.Future()
async def cb(msg):
nonlocal future
future.set_result(msg)
await nc.subscribe(&#34;updates&#34;, queue=&#34;workers&#34;, cb=cb)
await nc.publish(&#34;updates&#34;, b&#39;All is Well&#39;)
msg = await asyncio.wait_for(future, 1)
print(&#34;Msg&#34;, msg)
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_queue_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/subscribe_queue.rb#L1-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
Fiber.new do
f = Fiber.current
nc.subscribe(&#34;updates&#34;, queue: &#34;worker&#34;) do |msg, reply|
f.resume Time.now
end
nc.publish(&#34;updates&#34;, &#34;A&#34;)
# Use the response
msg = Fiber.yield
puts &#34;Msg: #{msg}&#34;
end.resume
end
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_queue_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L193-197"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">await nc.subscribe(&#39;updates&#39;, (err, msg) =&gt; {
t.log(&#39;worker got message&#39;, msg.data);
}, {queue: &#34;workers&#34;});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,193 @@
<div class="tab-wrap">
<input type="radio" id="subscribe_star_go" name="subscribe_star" class="tab" checked>
<label for="subscribe_star_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="subscribe_star_java" name="subscribe_star" class="tab">
<label for="subscribe_star_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="subscribe_star_js" name="subscribe_star" class="tab">
<label for="subscribe_star_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="subscribe_star_py" name="subscribe_star" class="tab">
<label for="subscribe_star_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="subscribe_star_ruby" name="subscribe_star" class="tab">
<label for="subscribe_star_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="subscribe_star_ts" name="subscribe_star" class="tab">
<label for="subscribe_star_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="subscribe_star_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/subscribe_star/main.go#L11-35"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Use a WaitGroup to wait for 2 messages to arrive
wg := sync.WaitGroup{}
wg.Add(2)
// Subscribe
if _, err := nc.Subscribe(&#34;time.*.east&#34;, func(m *nats.Msg) {
log.Printf(&#34;%s: %s&#34;, m.Subject, m.Data)
wg.Done()
}); err != nil {
log.Fatal(err)
}
// Wait for the 2 messages to come in
wg.Wait()
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_star_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SubscribeStar.java#L14-36"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Use a latch to wait for 2 messages to arrive
CountDownLatch latch = new CountDownLatch(2);
// Create a dispatcher and inline message handler
Dispatcher d = nc.createDispatcher((msg) -&gt; {
String subject = msg.getSubject();
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(subject &#43; &#34;: &#34; &#43; str);
latch.countDown();
});
// Subscribe
d.subscribe(&#34;time.*.east&#34;);
// Wait for messages to come in
latch.await();
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_star_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L134-157"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.subscribe(&#39;time.us.*&#39;, (msg, reply, subject) =&gt; {
// converting timezones correctly in node requires a library
// this doesn&#39;t take into account *many* things.
let time = &#34;&#34;;
switch (subject) {
case &#39;time.us.east&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/New_York&#34;});
break;
case &#39;time.us.central&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Chicago&#34;});
break;
case &#39;time.us.mountain&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Denver&#34;});
break;
case &#39;time.us.west&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Los_Angeles&#34;});
break;
default:
time = &#34;I don&#39;t know what you are talking about Willis&#34;;
}
t.log(subject, time);
});
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_star_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/subscribe_star.py#L6-28"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
# Use queue to wait for 2 messages to arrive
queue = asyncio.Queue()
async def cb(msg):
await queue.put_nowait(msg)
await nc.subscribe(&#34;time.*.east&#34;, cb=cb)
# Send 2 messages and wait for them to come in
await nc.publish(&#34;time.A.east&#34;, b&#39;A&#39;)
await nc.publish(&#34;time.B.east&#34;, b&#39;B&#39;)
msg_A = await queue.get()
msg_B = await queue.get()
print(&#34;Msg A:&#34;, msg_A)
print(&#34;Msg B:&#34;, msg_B)
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_star_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/subscribe_star.rb#L1-26"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
Fiber.new do
f = Fiber.current
nc.subscribe(&#34;time.*.east&#34;) do |msg, reply|
f.resume Time.now
end
nc.publish(&#34;time.A.east&#34;, &#34;A&#34;)
nc.publish(&#34;time.B.east&#34;, &#34;B&#34;)
# Use the response
msg_A = Fiber.yield
puts &#34;Msg A: #{msg_A}&#34;
msg_B = Fiber.yield
puts &#34;Msg B: #{msg_B}&#34;
end.resume
end
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_star_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L119-142"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">await nc.subscribe(&#39;time.us.*&#39;, (err, msg) =&gt; {
// converting timezones correctly in node requires a library
// this doesn&#39;t take into account *many* things.
let time = &#34;&#34;;
switch (msg.subject) {
case &#39;time.us.east&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/New_York&#34;});
break;
case &#39;time.us.central&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Chicago&#34;});
break;
case &#39;time.us.mountain&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Denver&#34;});
break;
case &#39;time.us.west&#39;:
time = new Date().toLocaleTimeString(&#34;en-us&#34;, {timeZone: &#34;America/Los_Angeles&#34;});
break;
default:
time = &#34;I don&#39;t know what you are talking about Willis&#34;;
}
console.log(msg.subject, time);
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,100 @@
<div class="tab-wrap">
<input type="radio" id="subscribe_sync_go" name="subscribe_sync" class="tab" checked>
<label for="subscribe_sync_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="subscribe_sync_java" name="subscribe_sync" class="tab">
<label for="subscribe_sync_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="subscribe_sync_js" name="subscribe_sync" class="tab">
<label for="subscribe_sync_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="subscribe_sync_py" name="subscribe_sync" class="tab">
<label for="subscribe_sync_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="subscribe_sync_ruby" name="subscribe_sync" class="tab">
<label for="subscribe_sync_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="subscribe_sync_ts" name="subscribe_sync" class="tab">
<label for="subscribe_sync_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="subscribe_sync_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/subscribe_sync/main.go#L11-35"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Subscribe
sub, err := nc.SubscribeSync(&#34;updates&#34;)
if err != nil {
log.Fatal(err)
}
// Wait for a message
msg, err := sub.NextMsg(10 * time.Second)
if err != nil {
log.Fatal(err)
}
// Use the response
log.Printf(&#34;Reply: %s&#34;, msg.Data)
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_sync_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SubscribeSync.java#L15-29"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Subscribe
Subscription sub = nc.subscribe(&#34;updates&#34;);
// Read a message
Message msg = sub.nextMessage(Duration.ZERO);
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(str);
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_sync_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L246-248"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// node-nats subscriptions are always async.
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_sync_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/notapplicable.txt#L9-11"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python"># Asyncio NATS client currently does not have a sync subscribe API
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_sync_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/notapplicable.txt#L13-15"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby"># The Ruby NATS client subscriptions are all async.
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_sync_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L238-240"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// ts-nats subscriptions are always async.
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,162 @@
<div class="tab-wrap">
<input type="radio" id="subscribe_w_reply_go" name="subscribe_w_reply" class="tab" checked>
<label for="subscribe_w_reply_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="subscribe_w_reply_java" name="subscribe_w_reply" class="tab">
<label for="subscribe_w_reply_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="subscribe_w_reply_js" name="subscribe_w_reply" class="tab">
<label for="subscribe_w_reply_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="subscribe_w_reply_py" name="subscribe_w_reply" class="tab">
<label for="subscribe_w_reply_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="subscribe_w_reply_ruby" name="subscribe_w_reply" class="tab">
<label for="subscribe_w_reply_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="subscribe_w_reply_ts" name="subscribe_w_reply" class="tab">
<label for="subscribe_w_reply_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="subscribe_w_reply_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/subscribe_w_reply/main.go#L11-39"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Subscribe
sub, err := nc.SubscribeSync(&#34;time&#34;)
if err != nil {
log.Fatal(err)
}
// Read a message
msg, err := sub.NextMsg(10 * time.Second)
if err != nil {
log.Fatal(err)
}
// Get the time
timeAsBytes := []byte(time.Now().String())
// Send the time
nc.Publish(msg.Reply, timeAsBytes)
// Flush and close the connection
nc.Flush()
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_w_reply_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/SubscribeWithReply.java#L17-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
// Subscribe
Subscription sub = nc.subscribe(&#34;time&#34;);
// Read a message
Message msg = sub.nextMessage(Duration.ZERO);
// Get the time
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(&#34;HH:mm:ss&#34;);
byte[] timeAsBytes = sdf.format(cal.getTime()).getBytes(StandardCharsets.UTF_8);
// Send the time
nc.publish(msg.getReplyTo(), timeAsBytes);
// Flush and close the connection
nc.flush(Duration.ZERO);
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_w_reply_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L28-35"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// set up a subscription to process a request
nc.subscribe(&#39;time&#39;, (msg, reply) =&gt; {
if (msg.reply) {
nc.publish(msg.reply, new Date().toLocaleTimeString());
}
});
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_w_reply_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/subscribe_w_reply.py#L8-31"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
future = asyncio.Future()
async def cb(msg):
nonlocal future
future.set_result(msg)
await nc.subscribe(&#34;time&#34;, cb=cb)
await nc.publish_request(&#34;time&#34;, new_inbox(), b&#39;What is the time?&#39;)
await nc.flush()
# Read the message
msg = await asyncio.wait_for(future, 1)
# Send the time
time_as_bytes = &#34;{}&#34;.format(datetime.now()).encode()
await nc.publish(msg.reply, time_as_bytes)
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_w_reply_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/subscribe_w_reply.rb#L1-22"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
Fiber.new do
f = Fiber.current
nc.subscribe(&#34;time&#34;) do |msg, reply|
f.resume Time.now
end
nc.publish(&#34;time&#34;, &#39;What is the time?&#39;, NATS.create_inbox)
# Use the response
msg = Fiber.yield
puts &#34;Reply: #{msg}&#34;
end.resume
end
</code></pre>
</div>
<div class="tab__content">
<pre id="subscribe_w_reply_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L29-38"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// set up a subscription to process a request
await nc.subscribe(&#39;time&#39;, (err, msg) =&gt; {
if (msg.reply) {
nc.publish(msg.reply, new Date().toLocaleTimeString());
} else {
t.log(&#39;got a request for the time, but no reply subject was set.&#39;);
}
});
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,168 @@
<div class="tab-wrap">
<input type="radio" id="unsubscribe_go" name="unsubscribe" class="tab" checked>
<label for="unsubscribe_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="unsubscribe_java" name="unsubscribe" class="tab">
<label for="unsubscribe_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="unsubscribe_js" name="unsubscribe" class="tab">
<label for="unsubscribe_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="unsubscribe_py" name="unsubscribe" class="tab">
<label for="unsubscribe_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="unsubscribe_ruby" name="unsubscribe" class="tab">
<label for="unsubscribe_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="unsubscribe_ts" name="unsubscribe" class="tab">
<label for="unsubscribe_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="unsubscribe_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/unsubscribe/main.go#L10-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Sync Subscription
sub, err := nc.SubscribeSync(&#34;updates&#34;)
if err != nil {
log.Fatal(err)
}
if err := sub.Unsubscribe(); err != nil {
log.Fatal(err)
}
// Async Subscription
sub, err = nc.Subscribe(&#34;updates&#34;, func(_ *nats.Msg) {})
if err != nil {
log.Fatal(err)
}
if err := sub.Unsubscribe(); err != nil {
log.Fatal(err)
}
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/Unsubscribe.java#L14-31"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
Dispatcher d = nc.createDispatcher((msg) -&gt; {
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(str);
});
// Sync Subscription
Subscription sub = nc.subscribe(&#34;updates&#34;);
sub.unsubscribe();
// Async Subscription
d.subscribe(&#34;updates&#34;);
d.unsubscribe(&#34;updates&#34;);
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L54-65"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// set up a subscription to process a request
let sub = nc.subscribe(NATS.createInbox(), (msg, reply) =&gt; {
if (msg.reply) {
nc.publish(reply, new Date().toLocaleTimeString());
}
});
// without arguments the subscription will cancel when the server receives it
// you can also specify how many messages are expected by the subscription
nc.unsubscribe(sub);
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/unsubscribe.py#L6-26"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
future = asyncio.Future()
async def cb(msg):
nonlocal future
future.set_result(msg)
sid = await nc.subscribe(&#34;updates&#34;, cb=cb)
await nc.publish(&#34;updates&#34;, b&#39;All is Well&#39;)
# Remove interest in subject
await nc.unsubscribe(sid)
# Won&#39;t be received...
await nc.publish(&#34;updates&#34;, b&#39;...&#39;)
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/unsubscribe.rb#L1-27"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
Fiber.new do
f = Fiber.current
sid = nc.subscribe(&#34;time&#34;) do |msg, reply|
f.resume Time.now
end
nc.publish(&#34;time&#34;, &#39;What is the time?&#39;, NATS.create_inbox)
# Use the response
msg = Fiber.yield
puts &#34;Reply: #{msg}&#34;
nc.unsubscribe(sid)
# Won&#39;t be received
nc.publish(&#34;time&#34;, &#39;What is the time?&#39;, NATS.create_inbox)
end.resume
end
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L51-64"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// set up a subscription to process a request
let sub = await nc.subscribe(createInbox(), (err, msg) =&gt; {
if (msg.reply) {
nc.publish(msg.reply, new Date().toLocaleTimeString());
} else {
t.log(&#39;got a request for the time, but no reply subject was set.&#39;);
}
});
// without arguments the subscription will cancel when the server receives it
// you can also specify how many messages are expected by the subscription
sub.unsubscribe();
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,167 @@
<div class="tab-wrap">
<input type="radio" id="unsubscribe_auto_go" name="unsubscribe_auto" class="tab" checked>
<label for="unsubscribe_auto_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="unsubscribe_auto_java" name="unsubscribe_auto" class="tab">
<label for="unsubscribe_auto_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="unsubscribe_auto_js" name="unsubscribe_auto" class="tab">
<label for="unsubscribe_auto_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="unsubscribe_auto_py" name="unsubscribe_auto" class="tab">
<label for="unsubscribe_auto_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="unsubscribe_auto_ruby" name="unsubscribe_auto" class="tab">
<label for="unsubscribe_auto_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="unsubscribe_auto_ts" name="unsubscribe_auto" class="tab">
<label for="unsubscribe_auto_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="unsubscribe_auto_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/unsubscribe_auto/main.go#L10-37"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
// Sync Subscription
sub, err := nc.SubscribeSync(&#34;updates&#34;)
if err != nil {
log.Fatal(err)
}
if err := sub.AutoUnsubscribe(1); err != nil {
log.Fatal(err)
}
// Async Subscription
sub, err = nc.Subscribe(&#34;updates&#34;, func(_ *nats.Msg) {})
if err != nil {
log.Fatal(err)
}
if err := sub.AutoUnsubscribe(1); err != nil {
log.Fatal(err)
}
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_auto_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/AutoUnsubscribe.java#L14-31"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
Dispatcher d = nc.createDispatcher((msg) -&gt; {
String str = new String(msg.getData(), StandardCharsets.UTF_8);
System.out.println(str);
});
// Sync Subscription
Subscription sub = nc.subscribe(&#34;updates&#34;);
sub.unsubscribe(1);
// Async Subscription
d.subscribe(&#34;updates&#34;);
d.unsubscribe(&#34;updates&#34;, 1);
// Close the connection
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_auto_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/subscriber_samples.js#L105-120"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// `max` specifies the number of messages that the server will forward.
// The server will auto-cancel.
let opts = {max: 10};
let sub = nc.subscribe(NATS.createInbox(), opts, (msg) =&gt; {
t.log(msg);
});
// another way after 10 messages
let sub2 = nc.subscribe(NATS.createInbox(), (err, msg) =&gt; {
t.log(msg.data);
});
// if the subscription already received 10 messages, the handler
// won&#39;t get any more messages
nc.unsubscribe(sub2, 10);
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_auto_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/unsubscribe_auto.py#L6-21"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
async def cb(msg):
print(msg)
sid = await nc.subscribe(&#34;updates&#34;, cb=cb)
await nc.auto_unsubscribe(sid, 1)
await nc.publish(&#34;updates&#34;, b&#39;All is Well&#39;)
# Won&#39;t be received...
await nc.publish(&#34;updates&#34;, b&#39;...&#39;)
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_auto_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/unsubscribe_auto.rb#L1-25"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">require &#39;nats/client&#39;
require &#39;fiber&#39;
NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
Fiber.new do
f = Fiber.current
nc.subscribe(&#34;time&#34;, max: 1) do |msg, reply|
f.resume Time.now
end
nc.publish(&#34;time&#34;, &#39;What is the time?&#39;, NATS.create_inbox)
# Use the response
msg = Fiber.yield
puts &#34;Reply: #{msg}&#34;
# Won&#39;t be received
nc.publish(&#34;time&#34;, &#39;What is the time?&#39;, NATS.create_inbox)
end.resume
end
</code></pre>
</div>
<div class="tab__content">
<pre id="unsubscribe_auto_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/subscriber_samples.ts#L94-109"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">// `max` specifies the number of messages that the server will forward.
// The server will auto-cancel.
let opts = {max: 10};
let sub = await nc.subscribe(createInbox(), (err, msg) =&gt; {
t.log(msg.data);
}, opts);
// another way after 10 messages
let sub2 = await nc.subscribe(createInbox(), (err, msg) =&gt; {
t.log(msg.data);
});
// if the subscription already received 10 messages, the handler
// won&#39;t get any more messages
sub2.unsubscribe(10);
</code></pre>
</div>
</div>

View File

@@ -0,0 +1,134 @@
<div class="tab-wrap">
<input type="radio" id="wildcard_tester_go" name="wildcard_tester" class="tab" checked>
<label for="wildcard_tester_go" class="api-lang" data-language="go">Go</label>
<input type="radio" id="wildcard_tester_java" name="wildcard_tester" class="tab">
<label for="wildcard_tester_java" class="api-lang" data-language="java">Java</label>
<input type="radio" id="wildcard_tester_js" name="wildcard_tester" class="tab">
<label for="wildcard_tester_js" class="api-lang" data-language="js">JavaScript</label>
<input type="radio" id="wildcard_tester_py" name="wildcard_tester" class="tab">
<label for="wildcard_tester_py" class="api-lang" data-language="py">Python</label>
<input type="radio" id="wildcard_tester_ruby" name="wildcard_tester" class="tab">
<label for="wildcard_tester_ruby" class="api-lang" data-language="ruby">Ruby</label>
<input type="radio" id="wildcard_tester_ts" name="wildcard_tester" class="tab">
<label for="wildcard_tester_ts" class="api-lang" data-language="ts">TypeScript</label>
<div class="tab__content">
<pre id="wildcard_tester_go_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/go-nats-examples/blob/master/api-examples/wildcard_tester/main.go#L11-41"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
if err != nil {
log.Fatal(err)
}
defer nc.Close()
zoneID, err := time.LoadLocation(&#34;America/New_York&#34;)
if err != nil {
log.Fatal(err)
}
now := time.Now()
zoneDateTime := now.In(zoneID)
formatted := zoneDateTime.String()
nc.Publish(&#34;time.us.east&#34;, []byte(formatted))
nc.Publish(&#34;time.us.east.atlanta&#34;, []byte(formatted))
zoneID, err = time.LoadLocation(&#34;Europe/Warsaw&#34;)
if err != nil {
log.Fatal(err)
}
zoneDateTime = now.In(zoneID)
formatted = zoneDateTime.String()
nc.Publish(&#34;time.eu.east&#34;, []byte(formatted))
nc.Publish(&#34;time.eu.east.warsaw&#34;, []byte(formatted))
// Close the connection
nc.Close()
</code></pre>
</div>
<div class="tab__content">
<pre id="wildcard_tester_java_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/java-nats-examples/blob/master/src/main/java/io/nats/examples/PublishForWildcards.java#L17-34"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
ZoneId zoneId = ZoneId.of(&#34;America/New_York&#34;);
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(), zoneId);
String formatted = zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
nc.publish(&#34;time.us.east&#34;, formatted.getBytes(StandardCharsets.UTF_8));
nc.publish(&#34;time.us.east.atlanta&#34;, formatted.getBytes(StandardCharsets.UTF_8));
zoneId = ZoneId.of(&#34;Europe/Warsaw&#34;);
zonedDateTime = ZonedDateTime.ofInstant(Instant.now(), zoneId);
formatted = zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
nc.publish(&#34;time.eu.east&#34;, formatted.getBytes(StandardCharsets.UTF_8));
nc.publish(&#34;time.eu.east.warsaw&#34;, formatted.getBytes(StandardCharsets.UTF_8));
nc.flush(Duration.ZERO);
nc.close();
</code></pre>
</div>
<div class="tab__content">
<pre id="wildcard_tester_js_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/node-nats-examples/blob/master/src/publisher_samples.js#L138-143"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.publish(&#39;time.us.east&#39;);
nc.publish(&#39;time.us.central&#39;);
nc.publish(&#39;time.us.mountain&#39;);
nc.publish(&#39;time.us.west&#39;);
</code></pre>
</div>
<div class="tab__content">
<pre id="wildcard_tester_py_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/asyncio-nats-examples/blob/master/wildcard_tester.py#L6-19"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-python">nc = NATS()
await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
await nc.publish(&#34;time.us.east&#34;, b&#39;...&#39;)
await nc.publish(&#34;time.us.east.atlanta&#34;, b&#39;...&#39;)
await nc.publish(&#34;time.eu.east&#34;, b&#39;...&#39;)
await nc.publish(&#34;time.eu.east.warsaw&#34;, b&#39;...&#39;)
await nc.close()
</code></pre>
</div>
<div class="tab__content">
<pre id="wildcard_tester_ruby_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ruby-nats-examples/blob/master/wildcard_tester.rb#L2-12"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-ruby">NATS.start do |nc|
nc.publish(&#34;time.us.east&#34;, &#39;...&#39;)
nc.publish(&#34;time.us.east.atlanta&#34;, &#39;...&#39;)
nc.publish(&#34;time.eu.east&#34;, &#39;...&#39;)
nc.publish(&#34;time.eu.east.warsaw&#34;, &#39;...&#39;)
nc.drain
end
</code></pre>
</div>
<div class="tab__content">
<pre id="wildcard_tester_ts_content"><a class="toolbar-icons pull-right" target="_blank" href="https://github.com/nats-io/ts-nats-examples/blob/master/src/publisher_samples.ts#L139-144"><i class="mdi mdi-github-circle" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="mdi mdi-content-copy js-copy" title="Copy to Clipboard"></i></a><span class="copy-msg pull-right"></span><code class="language-javascript">nc.publish(&#39;time.us.east&#39;);
nc.publish(&#39;time.us.central&#39;);
nc.publish(&#39;time.us.mountain&#39;);
nc.publish(&#39;time.us.west&#39;);
</code></pre>
</div>
</div>