/backup/layouts/partials/doc/subscribe_async.html

https://github.com/nats-io/nats-site · HTML · 148 lines · 90 code · 58 blank · 0 comment · 0 complexity · 2f9c4184a5ecde0bbb9c815fb74bdc87 MD5 · raw file

  1. <ul class="nav nav-tabs">
  2. <li class="active api-lang" data-language="go">
  3. <a data-toggle="tab" href="#subscribe_async-go">Go</a>
  4. </li>
  5. <li class="api-lang" data-language="java">
  6. <a data-toggle="tab" href="#subscribe_async-java">Java</a>
  7. </li>
  8. <li class="api-lang" data-language="js">
  9. <a data-toggle="tab" href="#subscribe_async-js">JavaScript</a>
  10. </li>
  11. <li class="api-lang" data-language="py">
  12. <a data-toggle="tab" href="#subscribe_async-py">Python</a>
  13. </li>
  14. <li class="api-lang" data-language="ruby">
  15. <a data-toggle="tab" href="#subscribe_async-ruby">Ruby</a>
  16. </li>
  17. <li class="api-lang" data-language="ts">
  18. <a data-toggle="tab" href="#subscribe_async-ts">TypeScript</a>
  19. </li>
  20. </ul>
  21. <div class="tab-content">
  22. <pre class="tab-pane fade in active" id="subscribe_async-go"><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="icon icon-github js-tooltip" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="icon icon-copy js-copy js-tooltip" title="Copy to Clipboard"></i></a><code class="language-go">nc, err := nats.Connect(&#34;demo.nats.io&#34;)
  23. if err != nil {
  24. log.Fatal(err)
  25. }
  26. defer nc.Close()
  27. // Use a WaitGroup to wait for a message to arrive
  28. wg := sync.WaitGroup{}
  29. wg.Add(1)
  30. // Subscribe
  31. if _, err := nc.Subscribe(&#34;updates&#34;, func(m *nats.Msg) {
  32. wg.Done()
  33. }); err != nil {
  34. log.Fatal(err)
  35. }
  36. // Wait for a message to come in
  37. wg.Wait()
  38. // Close the connection
  39. nc.Close()
  40. </code></pre>
  41. <pre class="tab-pane fade" id="subscribe_async-java"><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="icon icon-github js-tooltip" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="icon icon-copy js-copy js-tooltip" title="Copy to Clipboard"></i></a><code class="language-java">Connection nc = Nats.connect(&#34;nats://demo.nats.io:4222&#34;);
  42. // Use a latch to wait for a message to arrive
  43. CountDownLatch latch = new CountDownLatch(1);
  44. // Create a dispatcher and inline message handler
  45. Dispatcher d = nc.createDispatcher((msg) -&gt; {
  46. String str = new String(msg.getData(), StandardCharsets.UTF_8);
  47. System.out.println(str);
  48. latch.countDown();
  49. });
  50. // Subscribe
  51. d.subscribe(&#34;updates&#34;);
  52. // Wait for a message to come in
  53. latch.await();
  54. // Close the connection
  55. nc.close();
  56. </code></pre>
  57. <pre class="tab-pane fade" id="subscribe_async-js"><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="icon icon-github js-tooltip" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="icon icon-copy js-copy js-tooltip" title="Copy to Clipboard"></i></a><code class="language-javascript">nc.subscribe(&#34;updates&#34;, (msg) =&gt; {
  58. t.log(msg);
  59. });
  60. </code></pre>
  61. <pre class="tab-pane fade" id="subscribe_async-py"><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="icon icon-github js-tooltip" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="icon icon-copy js-copy js-tooltip" title="Copy to Clipboard"></i></a><code class="language-python">nc = NATS()
  62. await nc.connect(servers=[&#34;nats://demo.nats.io:4222&#34;])
  63. future = asyncio.Future()
  64. async def cb(msg):
  65. nonlocal future
  66. future.set_result(msg)
  67. await nc.subscribe(&#34;updates&#34;, cb=cb)
  68. await nc.publish(&#34;updates&#34;, b&#39;All is Well&#39;)
  69. await nc.flush()
  70. # Wait for message to come in
  71. msg = await asyncio.wait_for(future, 1)
  72. </code></pre>
  73. <pre class="tab-pane fade" id="subscribe_async-ruby"><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="icon icon-github js-tooltip" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="icon icon-copy js-copy js-tooltip" title="Copy to Clipboard"></i></a><code class="language-ruby">require &#39;nats/client&#39;
  74. NATS.start(servers:[&#34;nats://127.0.0.1:4222&#34;]) do |nc|
  75. nc.subscribe(&#34;updates&#34;) do |msg|
  76. puts msg
  77. nc.close
  78. end
  79. nc.publish(&#34;updates&#34;, &#34;All is Well&#34;)
  80. end
  81. </code></pre>
  82. <pre class="tab-pane fade" id="subscribe_async-ts"><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="icon icon-github js-tooltip" title="View on GitHub"></i></a><a class="toolbar-icons pull-right"><i class="icon icon-copy js-copy js-tooltip" title="Copy to Clipboard"></i></a><code class="language-javascript">nc.subscribe(&#34;updates&#34;, (err, msg) =&gt; {
  83. if(err) {
  84. console.log(&#39;error&#39;, err);
  85. } else {
  86. t.log(msg.data);
  87. }
  88. });
  89. </code></pre>
  90. </div>