forked from asyncapi/website
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
update hello world tutorials for send and receive
- Loading branch information
1 parent
241ba10
commit f0934a4
Showing
2 changed files
with
122 additions
and
2 deletions.
There are no files selected for viewing
4 changes: 2 additions & 2 deletions
4
.../tutorials/getting-started/hello-world.md → ...ng-started/hello-world-receive-message.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
120 changes: 120 additions & 0 deletions
120
pages/docs/tutorials/getting-started/hello-world-send-message.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
--- | ||
title: "Send 'Hello world' message" | ||
weight: 30 | ||
--- | ||
|
||
Let's define an application that's capable of sending a `"hello {name}"` message: | ||
|
||
<CodeBlock> | ||
{`asyncapi: 3.0.0 | ||
info: | ||
title: Hello world application | ||
version: '0.1.0' | ||
channels: | ||
hello: | ||
address: 'hello' | ||
messages: | ||
sayHelloMessage: | ||
payload: | ||
type: string | ||
pattern: '^hello .+$' | ||
operations: | ||
sendHello: | ||
action: 'send' | ||
channel: | ||
$ref: '#/channels/hello'`} | ||
</CodeBlock> | ||
|
||
Let's get into the details of this sample AsyncAPI document: | ||
|
||
<CodeBlock highlightedLines={[1]}> | ||
{`asyncapi: 3.0.0 | ||
info: | ||
title: Hello world application | ||
version: '0.1.0' | ||
channels: | ||
hello: | ||
address: 'hello' | ||
messages: | ||
sayHelloMessage: | ||
payload: | ||
type: string | ||
pattern: '^hello .+$' | ||
operations: | ||
sendHello: | ||
action: 'send' | ||
channel: | ||
$ref: '#/channels/hello'`} | ||
</CodeBlock> | ||
|
||
The first line of the specification starts with the document type `asyncapi` and the version (3.0.0). That line doesn't have to be the first one, but it's a best practice. | ||
|
||
<CodeBlock highlightedLines={[2,3,4]}> | ||
{`asyncapi: 3.0.0 | ||
info: | ||
title: Hello world application | ||
version: '0.1.0' | ||
channels: | ||
hello: | ||
address: 'hello' | ||
messages: | ||
sayHelloMessage: | ||
payload: | ||
type: string | ||
pattern: '^hello .+$' | ||
operations: | ||
sendHello: | ||
action: 'send' | ||
channel: | ||
$ref: '#/channels/hello'`} | ||
</CodeBlock> | ||
|
||
The `info` object contains the minimum required information about the application. It contains the `title`, which is a memorable name for the API, and the `version`. While it's not mandatory, it's strongly recommended to change the version whenever you make changes to the API. | ||
|
||
<CodeBlock highlightedLines={[5,6,7,8,9,10,11,12]}> | ||
{`asyncapi: 3.0.0 | ||
info: | ||
title: Hello world application | ||
version: '0.1.0' | ||
channels: | ||
hello: | ||
address: 'hello' | ||
messages: | ||
sayHelloMessage: | ||
payload: | ||
type: string | ||
pattern: '^hello .+$' | ||
operations: | ||
sendHello: | ||
action: 'send' | ||
channel: | ||
$ref: '#/channels/hello'`} | ||
</CodeBlock> | ||
|
||
The `channels` section of the specification houses all of the mediums where messages flow through. For example, some systems use `topic`, `event name` or `routing key`. Different kinds of information flow through each channel similar to the analogy of TV channels. | ||
|
||
You only have one channel called `hello`, and you see what message is available in this channel and how it must be structured. The `payload` object defines that the message must be a string and match the given regular expression in a string format such as `hello {name}`. | ||
|
||
<CodeBlock highlightedLines={[13,14,15,16,17]}> | ||
{`asyncapi: 3.0.0 | ||
info: | ||
title: Hello world application | ||
version: '0.1.0' | ||
channels: | ||
hello: | ||
address: 'hello' | ||
messages: | ||
sayHelloMessage: | ||
payload: | ||
type: string | ||
pattern: '^hello .+$' | ||
operations: | ||
sendHello: | ||
action: 'receive' | ||
channel: | ||
$ref: '#/channels/hello'`} | ||
</CodeBlock> | ||
|
||
The `operations` section is where you describe what the application is doing. Each operation has a unique identifier for example, `sendHello`. | ||
|
||
In the above example, you see that the `Hello world application` is a producer sending the `sayHelloMessage` message from the `hello` channel. In other words, you can say that the `Hello world application` pubishes to the `hello` topic to `send` the `sayHelloMessage` message. That AsyncAPI document describes what the `Hello world application` is doing, not what others can do with it. |