From 73429ef4e4428297cbb8b765fc929a1d1c871d15 Mon Sep 17 00:00:00 2001 From: Rowena Date: Tue, 1 Apr 2025 18:18:24 +0200 Subject: [PATCH 1/9] feat(nats): add doc for nats produc --- menu/navigation.json | 76 ++++++++++++ pages/nats/api-cli/index.mdx | 8 ++ pages/nats/api-cli/nats-cli.mdx | 114 ++++++++++++++++++ .../assets/scaleway-nats-create-account.webp | Bin 0 -> 19190 bytes pages/nats/assets/scaleway-nats-creds.webp | Bin 0 -> 23498 bytes pages/nats/assets/scaleway-nats-overview.webp | Bin 0 -> 38086 bytes pages/nats/concepts.mdx | 78 ++++++++++++ pages/nats/faq.mdx | 31 +++++ .../assets/scaleway-nats-create-account.webp | Bin 0 -> 19190 bytes .../how-to/assets/scaleway-nats-creds.webp | Bin 0 -> 23498 bytes .../how-to/assets/scaleway-nats-overview.webp | Bin 0 -> 38086 bytes pages/nats/how-to/create-account.mdx | 43 +++++++ pages/nats/how-to/create-credentials.mdx | 51 ++++++++ pages/nats/how-to/delete-account.mdx | 44 +++++++ pages/nats/how-to/index.mdx | 8 ++ pages/nats/how-to/manage-credentials.mdx | 42 +++++++ pages/nats/how-to/monitor-nats-cockpit.mdx | 45 +++++++ pages/nats/index.mdx | 73 +++++++++++ pages/nats/quickstart.mdx | 90 ++++++++++++++ pages/nats/reference-content/index.mdx | 8 ++ pages/nats/reference-content/limitations.mdx | 22 ++++ .../nats/reference-content/nats-overview.mdx | 81 +++++++++++++ 22 files changed, 814 insertions(+) create mode 100644 pages/nats/api-cli/index.mdx create mode 100644 pages/nats/api-cli/nats-cli.mdx create mode 100644 pages/nats/assets/scaleway-nats-create-account.webp create mode 100644 pages/nats/assets/scaleway-nats-creds.webp create mode 100644 pages/nats/assets/scaleway-nats-overview.webp create mode 100644 pages/nats/concepts.mdx create mode 100644 pages/nats/faq.mdx create mode 100644 pages/nats/how-to/assets/scaleway-nats-create-account.webp create mode 100644 pages/nats/how-to/assets/scaleway-nats-creds.webp create mode 100644 pages/nats/how-to/assets/scaleway-nats-overview.webp create mode 100644 pages/nats/how-to/create-account.mdx create mode 100644 pages/nats/how-to/create-credentials.mdx create mode 100644 pages/nats/how-to/delete-account.mdx create mode 100644 pages/nats/how-to/index.mdx create mode 100644 pages/nats/how-to/manage-credentials.mdx create mode 100644 pages/nats/how-to/monitor-nats-cockpit.mdx create mode 100644 pages/nats/index.mdx create mode 100644 pages/nats/quickstart.mdx create mode 100644 pages/nats/reference-content/index.mdx create mode 100644 pages/nats/reference-content/limitations.mdx create mode 100644 pages/nats/reference-content/nats-overview.mdx diff --git a/menu/navigation.json b/menu/navigation.json index c53a923632..2424fe35f6 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4143,6 +4143,82 @@ "label": "Jobs", "slug": "serverless-jobs" }, + { + "items": [ + { + "label": "Overview", + "slug": "../messaging" + }, + { + "label": "Concepts", + "slug": "concepts" + }, + { + "label": "Quickstart", + "slug": "quickstart" + }, + { + "label": "FAQ", + "slug": "faq" + }, + { + "items": [ + { + "label": "Create a NATS account", + "slug": "create-account" + }, + { + "label": "Create credentials", + "slug": "create-credentials" + }, + { + "label": "Manage credentials", + "slug": "manage-credentials" + }, + { + "label": "Monitor NATS with Cockpit", + "slug": "monitor-nats-cockpit" + }, + { + "label": "Delete a NATS account", + "slug": "delete-nats-account" + } + ], + "label": "How to", + "slug": "how-to" + }, + { + "items": [ + { + "label": "NATS API Reference", + "slug": "https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/" + }, + { + "label": "Using the NATS CLI", + "slug": "nats-cli" + } + ], + "label": "API/CLI", + "slug": "api-cli" + }, + { + "items": [ + { + "label": "NATS overview", + "slug": "nats-overview" + }, + { + "label": "Limitations", + "slug": "limitations" + } + ], + "label": "Additional Content", + "slug": "reference-content" + } + ], + "label": "NATS", + "slug": "nats" + }, { "items": [ { diff --git a/pages/nats/api-cli/index.mdx b/pages/nats/api-cli/index.mdx new file mode 100644 index 0000000000..cf24e2b0b3 --- /dev/null +++ b/pages/nats/api-cli/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS - API/CLI Documentation + description: NATS API/CLI Documentation +content: + h1: NATS - API/CLI Documentation + paragraph: NATS API/CLI Documentation +--- diff --git a/pages/nats/api-cli/nats-cli.mdx b/pages/nats/api-cli/nats-cli.mdx new file mode 100644 index 0000000000..f0730a55bc --- /dev/null +++ b/pages/nats/api-cli/nats-cli.mdx @@ -0,0 +1,114 @@ +--- +meta: + title: Using the NATS CLI + description: This page explains how to use the NATS CLI with Scaleway NATS +content: + h1: Using the NATS CLI + paragraph: This page explains how to use the NATS CLI with Scaleway NATS +tags: messaging nats cli +categories: + - messaging +dates: + validation: 2024-10-18 + posted: 2023-01-20 +--- + +The NATS CLI (`nats`) is the official NATS tool for managing your NATS resources. It allows you to simply create and manage your streams, consumers and more. + +Check out the official [NATS CLI documentation](https://docs.nats.io/using-nats/nats-tools/nats_cli/) for installation instructions, examples and more. + + + You can also configure Scaleway NATS with the Terraform/OpenTofu NATS Jetstream provider using our [dedicated tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider). + + +This page shows you how to get started with some basic actions via the NATS CLI. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- A Scaleway [NATS account](/nats/how-to/create-nats-account) +- NATS [credentials](/nats/how-to/create-credentials/) downloaded to your machine + +## Installing the NATS CLI + +Follow instructions from the [official NATS documentation](https://docs.nats.io/using-nats/nats-tools/nats_cli#installing-nats). The installation process may differ depending on your OS. + +## Define a context + +To simplify your interactions with NATS hosted on Scaleway, we recommend that you use [contexts](https://docs.nats.io/using-nats/nats-tools/nats_cli#nats-contexts). A context is a named configuration that stores the settings (such as credentials, URLs and certificates) required to connect to NATS. By creating a context, you won't need to specify your server and credentials with each new request. + +### Create a context + +The example below creates a context named `scaleway`. +- Replace `{Scaleway NATS URL}` with the URL of your NATS account (find this in the console on your NATS account **Overview** tab). +- Replace `{path to your creds file}` with the path to the location where you [downloaded your `.creds` file](/nats/how-to/create-credentials/). + +```bash +nats context save scaleway --server={Scaleway NATS URL} --creds={path to your creds file} +``` + +### Use the saved context + +Enter the following command to select the `scaleway` context for use: + +``` +nats context select scaleway +``` + +## Create a stream + +To create a [stream](/nats/concepts/#stream), use the command `nats stream add` and follow the CLI guidelines. + + + Bear in mind that: + - Scaleway NATS does not support in-memory streams: choose `File` as storage backend. + - Some [system limits](/nats/reference-content/limitations/) may apply by default. + - If you choose a `Retention Policy` other than `Work Queue` you will be billed for the messages stored and retained. + - Choosing three replicas has an impact on: + - The stream storage limit (as data is replicated 3 times) + - The volume of billed messages + + +You can connect to your stream using code, developer tools or the NATS CLI (for testing purposes only). + +## NATS cheat sheet + +Use the `nats cheat` command to get a list of all possible commands. + +Below we provide a summary of some useful commands. + +### General + +| Action | Command | +| ------------ | ------------------- | +| Show a specific section of cheats | `nats cheat pub` | +| List available sections | `nats cheat --sections` | + + +### Messaging + +| Action | Command | +| ------------ | ------------------- | +| Publish message from STDIN | `echo "hello world" \| nats pub destination.subject` | +| Publish 100 messages with a random body of 100 - 1000 characters | `nats cheat --sections``nats pub destination.subject "{{ Random 100 1000 }}" -H Count:{{ Count }} --count 100` | +| Publish message from STDINReceive new messages received with the subject ORDERS.new | `nats sub ORDERS.new` | +| Subscribe to messages, on subject source.subject | `nats sub source.subject` | + + +### Queuing/Streaming + +| Action | Command | +| ------------ | ------------------- | +| Adding a stream | `nats stream add` | +| Viewing a stream | `nats stream info STREAMNAME` | +| Removing a stream | `nats stream rm STREAMNAME` | +| Show a list of streams | `nats stream list` | +| Get message `12345` in stream `ORDERS` | `nats stream get ORDERS 12345` | +| Delete message `12345` in stream `ORDERS` | `nats stream rmm ORDERS 12345` | +| Purge messages from stream `ORDERS` | `nats stream purge ORDERS` | +| Mark a stream `ORDERS` as read only | `nats stream seal ORDERS` | +| Add a consumer | `nats consumer add` | +| View a consumer `NEW` of stream `ORDERS` | `nats consumer info ORDERS NEW` | +| Remove consumer `NEW` from stream `ORDERS`| `nats consumer rm ORDERS NEW` | +| Get messages from consumer `NEW` of stream `ORDERS` | `nats consumer next ORDERS NEW --ack --count=10 `, `nats consumer next ORDERS NEW --no-ack`, `nats consumer sub ORDERS NEW --ack` | diff --git a/pages/nats/assets/scaleway-nats-create-account.webp b/pages/nats/assets/scaleway-nats-create-account.webp new file mode 100644 index 0000000000000000000000000000000000000000..12653712c9cbc9bd0feebd3cb7dd5c6f6303756b GIT binary patch literal 19190 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

KiG)VMT`< zD!fW&|09HAc(M+2iDV7p9coOSp^97nx9$u9bo@GVelFR>W5(b3n2xOaMuQ?$PD|aiT)a8vD~_&h2q+ql-50!3@lPN`vPXbWpmZ^IIzonbuqk#{QPoNW+$XJ&x#-tl zZk)zzPx*qj)SU{0!iR*U*MD_0PDNcCR_)}d=KpRk13C}@$8bXMraZ?KF>Cz_wRWup zyH?DoudbRf>+;M7tN_@34u*es9OyV(=D6;2<($ydI_;Xm?~yrw^2AN%=P4yZ*Z#Vu zwk9R7peNqOQr>Q`oBleYkMVNrlIO=YvT999J~N8H;Nqe*qnrPPHf}d9RFiC`z@OI9 z`nopCRXzJHK{kUrwED8bQk>6VBG1N~Uik^XVa7YMF|7C|2B2Mtmb@zYZvkW?cNVXS zxi3W-?{pEI-Z{6Q-NLfAA^+*2%SKsaAHf zeXeNost~Jvvdyd7GZ_dH(O9CHw@e&F7!ft=y2VQn$;yaV)oprIOLSk(8JrV%?i_JK zgVv1PpEvTYT6uJ!CIL6TDzp%?)Mr6{W#z3i&1`6Y*Rthye-WfB3_0IsBJveVG!K~; z7POz098Cbxs#cUl)&1IMV@gD=);~rc{XaiVX>Ip7QfLP0Ea?@`Xfh%3V6X^Di7-!{ zxjkOxDT4Pha5N$JibFYN+SA>ltAi}pW;~*UJe(d!=pw+jbV9}_Z6?`VH$>#%)V%U4 z$3EhAH)dh?)x!E0bPz(wBm0)_in$2OxDL-s5X)9Kq&sxKg`yeb@8s|y1E7g(o{Na} za2!n_`jvamH=wn&@r8a95mNke>C3>@G4F^VONv_hK0Q~Zz5g){lkTc#pILefb$aE? zK$RjmAT*wte&?xE=$2c1G+KP;21bNto-Y*&#gT#A=?FJTQ`m4x>btMsf72nS&E>)M zQhFHO`7oCTD*}rKKg~VE-JMHaXE1G5=SPe#@kVN$`Rk$&Md>FAX}&W8IvwLk%NGv>`rtK4)h!xXk0+hJRMJdGQRe|Bx3 zD_7$o{wI_IyQ~I)iItd2HHmnM|3D2)aO2SMOMWIKYi`&!8b4D$ii8*Wrg}HkV2BIE@}MHs4vGwJYN#5YutJ#VAwojM?6eVrR@%B=+kGSd32qSr-{-5TmSaf zk(ZmVJCGqYPNSivsvl8f^8PyIRs*Q40=ztS54G4+`hJsv0k^q}I9sbQ}x z6^9U~bYi*wFH*>!7;GjX$nnO>54CQKGJR^1)t{PIxooff<)?oDvk!Gf|4yZDhvHYF zQ&$A+jHA<#q%QEJHos1Lx&ZLZ`otH>nsG}u=q@8^Y?q47_Zd4Iz{G3=k^r2qWTRd@ z9|tEFCIvdUeDJ6s$#wWh|D-xao7;oAD9mscSa}1h-{L`h)Y1RyMu+w@)}XaZw|dzE zOOe8|t+;XeV4ZnX%ciX3sqEJ@U){%_Hv*vQ7EPC()%kY}+So3pC;uc^iM$)30ZM>N zPdaBhv%I7Qjk-Ym8HQPt)FLhfn!zOdnvCn^10Gy_^~cC8mb@zyfZu~>mbS!E08P-z zJ$XFKq%DuuaFgPC6cDOuu_%c^tP@_Qe%zwE4YsS!%cezgx4u%j`u8e9&1PA?&I)k> zeZJ*P{cwkSqapUM!JEfszriy?BhK4_Gv1lT;X+TJ%D-U4wd^m1NKxKdU8*xw>@y)tQj!p4##*w!w-X;eRQTalDd z-Qvured$Bqf$kT?A9%flt8$`rcTEd(Du+JPD5w!>gw6&~Ez{%k4tzB}Sc%)Iv^)pBMursqbE>@hJQ2^otuLLHH;0+Wr>C!{@^6R(=S!mfiNL4*asV>1gJ!7vf zM`CPkZUs?+nBHcyspvc}320ZbTV@pTi-W^Kbz(U%&(rOlei@TkEp1)W_bT^(4IjaC zV-;K-wW)5=#08MbnpMlStx7UGs(`>u0spX#i#!?jk{Ogh0Duy+4)uhIM|Rqy#1#D2 zqG}4vkIFzG$3uQE`X%zo*_0&mg+Q&arl#jVC*EJNl-8IU+fk)k$xgLL_9W&Z+G0mU z<~+-Q+DsGK#AY7Q=eTAJH9d8?aSu1{o&gXF%RI%HCWp2&*H>&lF-x5PF(g?%fN%kQ zPVBfEAD{UewJSPwc8uoQLMsS$A%tBR`YoihArdHFLpz3Gy8)df-IBnsXHg)w;%aFSF(8{>e9lg$)(J7Ul&<; zzqsB2H555Lol4yfIs+=dm z-elimhwJa&mYVz{kq{!xicQrO?bS(qg7P8*xQb}63f5_(xkz)3X!iw{6KuIDO&OJo zR)Ik~#FHvq<)2i67O<9J*KLf9epDL84a+A!0Pio1Q@^B%)e^>M@n z3BZ@f3)0Pw)gSOZ%vodgZ!T9qHLmXm-Z>*ib5@CXh`@Y5mS!8iDUvn#Uf~3jPurnZ9d$7rm{)y1nF_MgdtO#WU6;&S3=f zzGnn>>jCG-4;OMaP;nA_xF7BN_gb|WYUo1M+vZ{2(Et>mS{7avce(%=0j<5X3 zirpZ}8o4V0-CnET&}&DWD95?5rwSu^nV(bUn4kSBurx=j_eLSH7!BlVR9 z6jKwM89~q)jjUwi+ywu%OLQiPPWADv8kGtnoZ<1C%_fw;(28esWmCB%`O$;50BG_- zVV|as&LktF9`>qAljA1!G43Am51pc>l37F^0KU3xZTD-ssY6H=mlL6Tw|(;-5~EL$ zQEw|#QfVpu$4hz@?M2hinq>JZC9VCvDV3VZZl9X&8)0gNHiq+`YFbFY`39cro@1@$ zviPfSm}Np8)+z>Ma>G7C#~CF24>Y&v+eTh1yw^Y*eGPdk3zm)s{Z-=jR+hMv1*I#y zJl{K`_j10^jRzN4s-hQs;U;{1ms=Kmf^v~_N6eEwU($j0TsTMTJpqg%WUJy0D>y=g zN-u?Bu^R;MXRfaVdeRx`De?&ugkCc0934+Ps9HgYcqmN&%|=lc95u;qr_EXzi20_t z>cOIQ^ft09C?&@Poh7Rn;aBL`M8Dq_MXiks*ZR(SXw~X3K8GJK-O#RB0?>c5SxZ0W&;L=_QcZVqZoU z>gE}jfYS-o$hxSwhBuZ1YB~!cf&D=IpP|1RbcE^{thxzjVnx-Huj+8&(+v> zm**2pI@Rse0o%g5SwN1|Fl&EQ^T6W8<}~n0;ZUn4HQU;;Mh$Xyd-TiC#W$YZ62KP> zid?h$`DBocx5|}Z)t<1{0k?~oSvmdl_-B$1W%cG`$?VU}-D8!CqcZ0+edEYkV!gLu zA|6VJD4px&Rfujlj|h{c5zuqTt)4X-B+xa;>;XpBuomdDeVKm5O~_*}{Lc&FlC9URvy^oVaSN0w;Za92|IK1oL-78a6_^(_;~;y+j6>5a zoziKwQI8(=)RW5Fn_awNm8;a{uZA->t3soRZH6q0>ykllp}nt{13zF0KO9 z#NviCpm*S-uO*{{UME9Oe>2+*3B&YkMMsFj)kaMCro?W`qqsQCQBL7K7=7j!LnG3? zi8DSM%(Q-1xn1a`<_c!<2A2@ zc%G%8O2t->jC6?0DFk7ZfxmY{{B9gkLFjlzg}7e8fVxBXA~G!jI3$7?nYNx{D_R^Y?OAO0JV=i0Orl1GWD9H$^D7!0uP>E z`w>Q1X_Ow;7L&H&Xi6(LgN}_q28Q|^3bKg9vsncJW`X?iyBZPLmCf%Vvt4Z_x1hal zYA&o4vTfAS-91F6nLVIgfcKPQ{`y1{7v)rFiIicbK}!0{U{> zlMIB!`4-f!>UhgRE!Wt!>-8qZ{E8V%vvQ+Ep0Fw}|H0c+-$9!513v27%Vg3}ngw^r}<~kN%ZZ+{Tl!_@&;pK(>nO ziVNb+Y>x&lPg<|MQj^-f7`-3qG2ikX_;i#;;n5Zxi+c?m-3(MNdve+h3Nqe1i0+&e zSMniHUOCv|;91lh=R-5oEdF5$va}>{nfh}AT^R~j0Ol#=t_&Z&wntyQAx}?mr<~2J zf>$o<-7G&h%_C)%$MA~-pEs<5NN?266xR_xSB?jHJbw3#d!#dIwu7eQ6xS55F_LtA ziT5tfrXkKw#hXPk>{N~TM)SFfRDM1Ctt~^+$fJK?cVccld3yzmOtxbbiySAzuDdyE zk9ggdWZ5jXJlP~Ccz}jPk_~g>$?~4l9MnlsPr^rot(+H|h@onk> zTR=|ScmI&L zGqC-rm;fO6Kk%E@wXhdGCo?`PV~*jvNS_*ZXZ+ZT8o#uEh+xn~lAmz1gz9i7So;?R zW8-=}D^xjH?C?K#B*Z3PETM9GFT?i1DTZ?Lf*ZI9lzWZi^~Zh6u+kD3v3=Ue09{#T zOhb~(O6W&LaA>*{&$?Oll zzg7`p+D@`Ch4&I)gXw#dwY4!l;v_G1y8rrl-QzZ9pROt{S>tQ&yAzrnv zG#$WIr-7KiT9hHCmVnKRF^xR5$3oLOFXKenN=g42xuB1O-nz_qRk7DdFK2ONRRAWI ztFK1SfXO`P6yCkT!05mNjgh*nC~634_(Hhwg1%3?d5TZxnV`nZ^QGrLlo(gLjt#T6 zj0w1Gg}7nnO=1fCpU0gHJI?)#m`!ro{2&1Yq_ieJ8tmpi&f-zUtuNkNJ&F->n*_CE zXgf(l7jp8XxOvY9&GK%U&4T5LN19cg3SHi0#Mt33ZDoi=zG2x0tBDWpwgoXaa6;q> zZl3;4=!Wib&{-Tr8RN<~8;o0O6Li}ibOHX3WwdN|b^Uh`z(`ABr`wFD`B(rH+ROEP znk7f5eW8+Dbi|aVH`id|_j+sN4l&sR+DbrUYB}0aOb_5ejsG%VZT3TO5Ze^yb&q^7 zK6^k^)OGfC3j1iveJ8H|b*%9R@m4U=%!fcNKd`FzUsCcc0>COF;xNEg?iOk+S=1N- zkPI_m2`p6yg64j=jS}g?Q;XH%6+jXqIdq>tV762H)eGMg$Go`-YN>=cKi+h$gw%e+ z1zYNrauA;9=PFD_75&22+r2j?4Bp#z>$Z^Mg6d}v;wKi5s@KL^frH`IS$?~O zme0d#CQ?3$7{35BoySrh{#zS_I^}-O{LjoksW$ay`Fa#%Q#npD3)6GvF4Q-zTT{UH zq(ODrcx4ICOweiiu)eK!wCtINC--YC#<`@9^>E-maK73BfgwY8-fRa*wNxo`_Uzzh zcxgqK|GSQNMj_vLYo_7qWoN^v#PV}f(1};I3peIZJb_HXR=e9_x&k3R#sqK-9*p0# zNE22CKgw{rgRVWpqT7KTs*8s)j{rSNOCeLP-)cB$q9|du&-VaFO)~0qXhB#^$J!+F zTF40Bl5q^dvL4Omzxbd)N`Cu0gR|&WDlnmgWDD3DXn;fgK=q3 zYKN{|>;7W8qKlD*9Oauz&>rEJn4h&Jsa-AgMuq4N>~+a8vJvK2V=mv+$TRv?(_TYy z1S_}-Da&sI>2^}gs=JjjkaD)5mA~1D4Q|ct{WZM$L<{oR0!{1d7Lx}sAWDUai)gRH z*U%#?zjRSapmc3bayy#LA>_*K5aG1lqGOp($$tU>oV*qXPt}6qO^+%nF9P%>>^9x8 z)gq-(*VGl|sVrSqZG7E5Roflsy03xYfDxs6VI2Y}oD*i}q4mfMK5@n<8|F;&u#>{k z)n~({OKW&g=dG&WRr@7nmD<@ZsH@iJ=U-e2YtJgU4J1%Fl2MZD?lu=Xs|$|?*Z#1c zNNeWQ`!t@a-NSD-HbDctXZh9M7PMuZJa~Lb79DUUHH)8Bu0cZNrtqGsP4%>_F-5*> z&faFxaa*OX?$H-un6L1zY6mpyvFy&C^X{$adWaScwZ+Zk@z@lxp0B}lbBV56Uv3S`t=JVVzZ5&XEUqRsA-W7@kMC3*) zyK}eVd}g8y`n#JDV5=>W#Fezvvk;0-S^#GqSar9Y*N(n@B2{KuLJIsaPOWplGSFCM zjL2ndx6YK~y%!#02ZVI*%k1@?Y}Mnt)A2BSeRBOcKJ;cF;A!tV*Iz6@lWB3qbN{An z$h)_=Y=Yl9ZFJyCO)sw*~zj1Prwdy9f^(Xtj5l!M7iIJ(_iHiM#-F)S1t4}{}2 z{czC|b=Rs8!4Wvmp`UJ7IJ^63)dQPoQ?j#=+IavbAm!VFs5J&=m#$_XlGMA6O>!?V zOzzNhpn8kyp2r+#ZxjrwXs34=j8I5GH_}JcgRny@?+^i{K(LI5sMm1noerTck*N1m zQ(bc#+l(Hpq$YZb=juyjsD5*!5yth>A%k~U#GBg8TR&RyF{8=d(EBDI==aYkZ*O#% z`Kyc3dFv_jod(gsl78>UYxJ`%2>vUW{1jYBYCgVLdF~9`U6_yBQ1?UzDSM(;Q4zGW z2yzP7^f^<64eX(lhL;aLlcSBhvTiF?_Rf!<8A3NPiMe1n(>y>S~v}MujR@yFA7b46Z!Adcwh>PnQ;-l{icCh~lPC11{I`mGC9MaJp zeLGv9wAZAN^DU_bPuEsrXLqa&oBsrgK$Cf=TIwTz>Lw-x>SQ`G2_Y+7qAq`S@4^Nf z>I^rH6lazLR;1jah;~_jAL_)s5?wFA{*fk$ik(EDKm8=1hLqk&Bu|TMO@JGWbD6$S zZ6sGGDY1mN3d~}+?W2oWKZF&}+htG-`Rtz49Y4h?%~Lx(u~q=wo9b$f@!Pcs&9w&u z{FcJh-<2cA-uYx;Q4Y#i#fYAYsH=9?lP2v^HC&@@UK?s^jSVd@G;x&5CzxjzvVA%a z9F(=Elkf02m8uKpK^c;ifFrF84%Jdi6c^!&@VTekEn^#%>r_*8DDcDpWJSFX@`ke3 zv*OYy006DgZyY+q7)T5WAQ|&qPLX7D?RQeyxvj(DQ3nGXSm=d{ZYLBEdt&R_;Y@>I zgwoU_=eB{yVA1>&#R98&m81V>G)6=GXV?@S?GXUE`qaZ3!7ID4y6lduO{5Avf3jci zUSiiGr}j^K9-)vJMnvAFL+@{=Q#vf-8|>&QMbpgX%GOlIBM$q9lD2ZohW&JqYizkH zMT(*MGJci$W>YTRw2X$b6E_>Sqcn|(rQGq=A zYd@0eqM3IeS0JJSp*W1Vsto&X<`zz5(sYiQ9+Z!+b=i^#BCKf&(wqxKGg(5kDYH+r zoDIW7yZ6ZEV-o?mW&UCXv$cDFgqRr!!4d=}cv91nc|d=m4RUZiDo;)lbBy2qNW7&9 z=q8|3EK|b~*gnS`FzlH;k#PAfbRQD?G5l^(FerPnVuvH(BXZN1aq|MHP z;EV(@=j4CWRPo43$la=u0Cm8shI!dCyR!PYzu0Xz#@=fgSM_qFFomO4muVwFZ%n4H zO0_EZndT|1h^3JEz}J`j7~$FzPFgvfkUeX483l+;R*((Hh{Z~6q{4rJCeX^nj;;g~ z4mLHw(u7ulD*8Pf_`Zd1P}G`*=$Q`^%D<@_8g2#C_?RpLYh`NiJ3qRuW%x1?|J zyrokYwYly|i}Oa#Q#MKHn8mGD)R~9%G-`8dQdy+U!UVkjX{RVgZY&pd{d8CXN`!I>em~L}@ z4_&g%fIi` z1r+FZc#h*h9fj?%xVTk?sosn;TBO0<$sQ(sT~O11j?O|2xW{MTUwPbR@TR!el%Gsg zV;$U^eDSCkfM@TeMdSyOr11?;rgYG*l?6yFO?dh7j*q5kovdmyH_BGP!(^?6tlh;U zb_%U%QKnmXtbkQ)z3rFzXtZUbqzBD617PTHj`JNIjUDg4XQ2XExG>Bjf6;$aNYQLA zjTQ_KTl(E|1C$Jj+w@h8GDO`!P~{~q2R2{sucpL{-imPd3_JJMM`o7MLs(qbs!>k4 z)}x`tc%(6S^i0Pod=f3SS|x~fJPeBI#^<9MksHGwl8NGRR>1KZZ>5)|@Y~n5<1`RN z=~c955LeVSP(RG7x82H`f*$&$SDkMs-Qr(8-_&2c<8|FVv$=d6&W<7(^yH5S=XQ+u z`tV^uzWN9t(_D)H8JE_VH7_xKaR{u36Y&omq~qBa-9h7|N`wOxZR1j9u7q?~{j->c zgW`c{k~H;wSsn4R#CFHi%5Z?{-?(p*gu>loTP__{AEb0&G!tX>|G;4ngr-QiLLRlh1}rLpiu)s#P&OO<1ZT6A#>Hbey@9 z@z;$iBYvXIGwe_hc*0hJq=Z<)zA*_5JVHfI!E-%PV{UwSwDb-V`f<2$`E8OJmzPu; zrM$dQ>l%|*hNPLN^>eHjCDyt^fB-fiqLbzjVVyZDc;8``;8v58i6 zl<@JA7o3yXt)ug&@h#@a3oUi0c3=s*!$@zMG_YwyE}t!sAO&P>bTi+Tp|tU3A9MlB2lvlgADkxzUecEcRE8UwL^dI%^j zDew;Eqy9aPmTZsMJ+IO0ddN|k7$#Rd&vZ;v>otD%dCA)As33~}&^C|1-Zu8En>+V(h7c#{{O?aR}$q5 z| zYCQyt`$ckI4isPxRVEA~om|cQYKqttv-Fr_7OADkLgpITi|G~wfR2SeQUC7wAe<|5 zcm(&RE7!u1iP+LeL8J~iuRHIupc1Gap0>*8`kwi3uRD6xqsm-eLPT|?S?>xGFumVd z!GOuH%ecCG*KlY&=)ucXETbGcd(#!gP0AuNOo|WZeZ#qT%B1iUwra&{8>DcfpL1|H zl1OtIXPMK4gAy3)oVMBJ{lJ8Bnsc#co}in3bIv@;@y0-W)-h4u#a}Z{2>Z)aXH87% z+=sk|PyhEKtLVm?sZ*A@@FtjqH;KX`oKs_glfHcYTmpi$1@q{!QFbLR>Ca(#aj|Qe zO*pCM?uosJI)M+Vyd^h`;rHF1Vnz2Jo%t{Y>_rDE3|3IOdD}<Ps74Ij z)#EzZ6Ox5bSh!9M!x;H<)Dw6JReNP$05nKSiJ9oB0(Zaz&?usZ=|O>vt}z?VMnn*# zgN)bw76VU32%s4w?)ctz^XOZoc;Y~+6|d?Gb=sR0WWs6x0^cnfT#rUSNvWxc z`GaZ`dcQ>1^5ubu=^qfJ&TSp&2mIG`Qp4vh% zsHFU-TU3Ib#k+ee$A0&M^tP)UalZ1Mi9ATqd9y;F7Sh7Zw{9&&Lts~!f4jRvvGC9F zw3_zHQZUkHzrR3q@(ABs-I|eG5}O+5&!bWz;L7TfE2BzT1-O`=stKN4jdH-GVJp6& zTjTh^>`8xj-Ow-Sy7@>%OK&WUF~FkxpNreB#JS5RPOG2LGOA5jZuLdflGs=Ko%+EC zXEg`6BhL;W2v)6Kcvad0*jhGnApgxAwu11J6$P3SFK&t)3{dZ;Z%Hobh7udCBk!Lh zptu?hX3=G;eaNMoex!4<6H+@@c@AV_r&S?H_GJ7Bv^#VftG$QF;^{)`$q>8Hbn}%T zAHY`~P4`K_nbv!nb2~Q=S_@yaZQ&gQX#D4T|HtCj)KJ;B#=qgQGd`tiA* zvY=Hr6Ib)QxXuelCb(*ul+MF?9OYcvd^kcUI>bZ;8R?McqK>83K;j_U)Zj^4(O16< zz<6_&XpKjwnW8G->us8it43M}H=8(bE;oyJ**peSRv&2F>Lp?sV_KZuF3T9(lI8)* zZQiJ|39^#;+5AOTGxIq7xRw>_i?2T!Jnhvj3XntY#&KoV2!6-lK&9dKNiOGo$F})6 zLJik*U_tkTvU^jtyjenu3i3O66=;Gx7W&#+ zAA(V&A{ZaK;2HdY$@p#mFGC8v_4X--)O8evvSx_8dGRHDC&u3BT2^CEO^J) zzmA&u@UB~p9c3C>{b2F~XzXk6h_T|<&g7iWym5l_p~~v_4iIP8@*jS=b+?cXrr`h2 zZ#|FXi?Fc;aXX<{awq6e|D4v2Iai7#Yrpg%SGn#MR6;S^FWq1XR*Zt(BE}=KD~3y?@Q z=k$#EcPEckLT`II5Sbt@?)Y`= zINKhcS)VIyIvsX)obSb?ybI8eYDe#GSO3#i;RW`8FXYnin-9*Pt$I7}cG7H5{dZ$+ zhuhV#jXJ+n+zP)Jy#T#q{eN5p6EZ2y`jB7G>*mg084Y=gkFJ|tnSOa*$mCM@A9=ri zO%S1l=V`K8gy(8IEVAHl$I-|C-%cL+K-ieP(x2Wju2lZLQ&4m8@1hw?4BcZ`qh{2o z`n|sM>3_K?gaUctmI%=Gk6$$4nYJB&n)#0gYV_(>e_D3`|x%8ovp{e8wQzF&vy&6(x{sp#-MEqgxGl#q=*zWsZv%`^1{*!O$d zsrW}SJCmmlc1CHReogi@0aK1wddtD|K+@#dWUIp z$-gEZ00&mfmp*%JJZ`Ud#r_d814vtWuD3O~kc5+r%x=)?{787--_C)*{IwJPqbQ~X zfVt~`Zs+t)`ePpe)abR!{El=a)qm{N>Ou zvQ&TXc+4IAyFe`7aI^paFE@iwC@b933HWas@apjGv;CjHZ`#=H+rJkbo*6F9_~#C8 z>%jkF+#F(|w({3ke(H0u*Y}L;?V08i0RUhRV4>meKVO|2XxuK(v{f+p#hiGLKYwC{Uf}n;Tdjx36^&CAAD`bR_v20nhyUJD zvNb60og+?K`CcwEkET#I4h$OqdVQ<4_=FNSR$msm<`?aq@wmP1{knZJk<^ab%xAg& zpPl^r0}_!FndPwc+Z|U)e(G~{_U1nq*tB)cZ7rCfai*tRb8w^ni<uu%tl6UItS^$m>{BeHu_S8QE6ibrhv6gMR6Gm^(80Bs6kh^Vm28elS^V;ceCsA9q zw+|e&b}$8BF6LXG>THg7#Mq0CU7^Krab1C2Wwqtk)tT9H3lh;1{|I(8K3#Nt#^d_?A3R=6jW>$_;6@Oi`|a<2xJA8U zd&atRG3d2h6i_klOVMd{xgD&&e0|)?G01Qc} z%7mwf&?TEd6-NSDLZBfW$w*#rw&90{fR z#Y1TtZ4b(XSsE-d-tD5<$}bWm74}M2MFLfU2%I<}D+b}k0fLo{U?gfI;nDQbrGcs z8iB$IE2@MP=mJWhvZBgJp=7a3V}yKSIxZo4HX}N*93@J7ftdNE6olNLIx{{HrykCAbg(lqLMG2-AaD zp-UD=0y_ZuB0?yZ6zd$a@!55bU8SttxO_3sqCBLjyE0i72~-6laN>xl7zF)hy0Q^y zvCwGm@N2|nR6Bull+8v5orB4QQJ)gj=yROH7BjI4sRxyl#gT9meGwtBja9s}=xKyx z0#j|`82Yfq&H#z3iUg|k5a?1$0O-m_pubvddJb@mWiYLvjbX2Qss=`+goWA6!7KpBE)|S;DIl<2a7MapN%i~H-Ife{73vp{73w^KnVZ<^+K!d+hNk&G(TL1u8MM6+kP&iDrTL1trR>E%pRg2=bZ5-MAZ=G`e-VreYXh+zB z5$rkBS)Ro;`y0>H=DbnEyEJ?1TKuHPHCQlqx)zap5CXSUx=j5w++B2|?O!c7jWCFr znVFfHnVFfHnPp~XW@ct4G2`9YbFcpA-aDhCbN+^7W;fspn7ut1TRLN=9#nx*tQLGD zI}^qP&usT!5+uoC+w>A908udfOMxju z`s%U%f4Lmn+3&mQt=h%VMdA`viKQy3ge9g{iLn`VgjX%8S=c10S>0l6P>UH_tx}1p zL29+ALC{i(r6MuZuD$pBF75Z-|6Q$H_nxiGOatHvICJD1+LO2`4ZtZoa&*?(k+Gwb z+L>Z=@s8?K(AE;xUtzjpaFD# zA-$O~!-J7CoB%__AVYLv1{4MWSd&=a5~L9ekhHN*v9HfAYWRNSlQzyPySoDwY{~%X z*ydpXfJKS6Z99$$x8*F$6IL!F%z(nGEmy|Nq_>W=R~#r)pqLDEmFKk(wCDWXdN~ zG_h;}Jj$g8yf+Q3$#o{50;Jp<9`#@uDe{V>cwMFr#Ivcq$z0@xqx8yqbuiKT-6r-N zo+Dp@*F^GCWMeOOpvbEWr1BkX15z(uq0|SX$>hBW72Yb8<1kVqjBYp$$h!)ZufnZB z1?Z>@ce9P95>$lx@Gt-XlVsbrxn;U=?-U&ET`q+4A7A?qT!Pr{=q%0LTTDw4C+Keg zfF;eg|I_J|*c1p3k|as8goLWOB0Q__ zvSsV5iy*ivy#JovE)f8x=P2B<6t4%(;`I-evc*n{ik7ZZ4*dc88x|8S@lzw8Xk}PZ zv@9Z88h!|Jvp)a6McGrX0sy+ zc|R7dczCVNUdU#}M2pAzI3>k<)lA zg3u~!hKL7T5aBNMw3Rj}Ci7?7>KphZX=Bqynbw+DHr(C}k%n6iydjwP+p@Ar7RjG+0GAJZfTyO9S2( z?sMzv+w8?&b7q1enVG`!X5QkETQQFVk*Z^3G^LzmX$}%y)vditE+VBUJS@Sh^q4>M zq>v+lkQ(t_S94KB@?p)1NdcB3Dn9X{;EwaG1OV|J^;Qv%wQ~F(RKM;a`x4_Rd8TEp zO9^lw>R)wIR{mzsjYuHOIU%Ux%fIEgfTI8~_Qx=tpE3zc1eiZP0XQ(N?6j)l&6yvT zAc#Yf@8{1Md#dJ=K#x^LH>Z|8coYN}Mv@^}nZmNBH|h|tSZ8hH?L{p+4_pd^G(u-T zF{@8e0L#Qz^~)dKMFAO}vP^UGJuAChY9d0o&U@I{^2>5cw+lNYK~R^t@Q8#TPt$@D8av=3-L^yhygW$3N#9k0R zZcNolX_?1?6OlrQQ-WW?pF8D5wa?%^4J*Rnajv0*5S9{4Y=Xd!EDiv7s@B|FUPKTO zQ*8G*BRv|DvXUYI-GWtf7ga(77MLF2?(L%K)nE8^L99^W3(cWr*^Isu&4QOL-1AaB zM-)oGlv|AJ3B@fqktdm@vU<-na2de+Ccak;v+}4_f}bUWcxP)u=A>XDZ?oQcnwO$z zJavTcLnqyMehQ}Lne3sH4MyCgUC6_yeE{$Qv{SzK;qI^EKlF!u0AtL*R)B>*&hB0k z3sMvfY!m#9WXh34QV>niyavlUjUOT505zg{&RQKb(KPOoU?#`HfBf~_f|a)|ss(6@ zU*bJL^PqE-mn{dXUw5g!D58h9%vh?(*E37=JX0_Qi==Qs(MW-_uCQYDSmq(5zz@!Ey-Yi;HhuuRNCq$UF&|pTX=aV`;S1+7b zLC<1^$h{!oKuzUez`$l_%YNy<3(9dOi<6vU9KFJGllmqjrilaRe+B9bd7Ry77eqf-4<;Nd$8= z_ykz2ZimfYk+eM|bQ}ERgoLck`BjXEIL~4xFuG;}8IDtsOVlMC6&Q%T}v) zhFFMSBt9$JdHOf2E)!o9IB?0Jlj6{dL~i?yik;6a#4i?KmgzXAP};Pc-dH@E;@JYc z<$Sy983Q!1w^i>v&87406Y49JyjUSUy&%{mn6c^enBQ+Pzng9X-@9H??0tGWKw;7Ch+@CY0c(H#eKmmY-0w?KaXCj^{f62N3-7KY@Gf@fvSXeP`{vqP#>)*b_)un;o$`Gp*z#9HGvSA1SYUHVmaf5-u&2<)ae7Ec6_3QNS-1b_%^&%sb1)7Enh;J3X0*2&jDl3#+4J^8UaM%|wi%w52uJEV2jhhA1%dg=@K+`P zM4wJLLvZYzqhN3aEZ&9mgNAOP>1m*w5 zY9{2=o$Kc!K#QW;1IGuz3o0Bl{~Af=8`!zR7Ovt#gH43t=i1F22{5d0gyMs|I~I)x zfuI6DTE${&H~q1+Xi7TT(h1(7W5z})!0J0b5E=Spe-jB`6R7y#HAQUVS|Y&eGp>iAhK&6G zm(-m2?;xJ1w0V)DS^1x&!c^sFebB)wfpA$P0P1S%v4FGBY z+OzaU1T#8XjYgtJwl&y97~0aeT?BkOIP0d6&G35P0;&(7{KxHrhlOdYZ$sPiQlLltgz&CPKOS49aDO7DWq2jq7yPoESO?4g6Su*dnEphbRLk~iybm-(Et*Ywef3Fe!E=4Hb+GdUs3TMpP zj{0`fA4^M~?hJ8Bg&Gjfm+opYMh3YTB-lT(;-sAN*-Q|7l8K_3IiB(d?Q6L>FmzE2 zy721Y`_;M63ygLV2DHK%Q&yuv^JM?FDW2XpHKOM!W&T4`>Eo?!AQZ{Yyv@`jk2EE2 zvQfLrCuDOFIPghC2t(hdjlm|uuoiYA3Hob#yY1r_*tFfnQ4ytNe}{ zxz26c6O-9fYz;!;jL^0;Co&E+AsiwEKi_7K5n!QkDBzIIYO+bnlR1wF^*IUvEaax&zDm%AfL6O$Nqw>(ZQ$}U9=&e$6{G421AxTw zEe?sAGHE^X9Z@(ev1N$x;)2_sH!^0Q$r|{#!KfcTpIA+~23poEDFrDfH9O4Zf-{#o z*;h#N6U0jDLu0?gr93SC6Q=g_u<6fH*PgG@PTS>+~RSd%>&S%$(UE8uyx&%eBXf6Et^nLg5(C?^W$)&=GaK`5)tt(P-(l%1N_)h^M z;T38cmp_8Xef8vn0yYJ~LXqohHXLie#ANyad#jOTqhQvy$1fqXd;P9wV-V4^mAjrT z4^R4^?W{(Dx`gv%b+Z_S=gT_vI%s~%=Dn!bmR9-3K>QujL$A&&3c~9DF|iQ{-TIaa zO_-)c^|xx)+)9B^{!_h<%@398p(}Jxtl;{Y8e?Q&3-`QK_tE>LXy_Q{WhPUOT=M9Y`6!%rc&)xPcR&}>4&k)oY1!N*E%3-#5e6N?@H2Ro=Q-46^7UEwh$N(j?7s(kJlrSXjzRzFyjg`n%V106>MloHVfhPF~ME z#q~@hDOlvkPwuO`ed9HS{^cisZ@sakKsC#vn1zn$J{?nLvgo&Vj7o~e@nTrmQ51NR z!)wL-f5nFH&(JR~xo)g_$|&+PjD&>3Q@u+XdNd)|l9{bmA#CA3x30d+S@dn57ne|2 z@~HU4yQ0PCnLwmKjd*)&E{lmjY`9SxM(mSJO?rk8^f0F01}Hm9djFt^ADuLh}!bcU`~wlT3myoAysrpH@@2UHPOK1r`}jo|lXs z=UVj(3UaM1zG+=cY5n`674GzBvHBA~&uKQ`IsM1`kM|$%zh}Fuy3Behwfh1Y{&Qr9&zu`Q zLtY#)YclAPPWVWD6kgJVAk*ZMR(QxIW`s6om#};+z3=w zrzT+VAVaI5a3oa9)Hk0YIOebHfeTyU%mzR(3@<#%%^Z%RSx zC>i#*5<>JP>QYtp2_cuT_|X`BuvTV-oZ3$zb^4u3h*>L^-6zPD2buNUYrv1v`*A=o z)_pRNjRAvdLdY3y6f&gE8H6-p*K7KMjM;}tM|oC2p56JkMwJ&=6dkH5Eho~&`tFih z6A08vc$Q@kvgU>K{7}19(lyX_- z?#8vKnY?{F)nxbWsS1)s2nZilN!J{yywp2=ATUs_c&I^xsCGw`L~3?5*}v;KgF<1C zyjbMaH&<(owIqQWglZ0A)g!M?E2DiLhNx>65LQL| z6gCa?4+$mtq-{86l?h?{?!qta@&psBaMY zf+-Zz)L{zpX$S}eU02w$(DbgC@3j}s6{^r0J!M}~$q zaF$*(U+Wjd=$oec*n2~{I{JV<5hH6fWp(De9Z7QuTHJhYt#?w&j$ZM5=q_RH0|mxS z{|;8)!nn)(Gy@@psa~!AY?(`_v(`e0?{d=(#O9Y_B{Tw-Vf`7=O7{-4XnkVF$T2*W zZMF%Cb9Sd&hQ&TNjovAG`E&L^+BUPv!^Xe~-A$v)s*kuUtxm|Pv^ssTvg%~#$|^OZ z(n=(&tkPa9t0a9~^+*w1^#CMH^|&@%^>9f{^(fpGcF4<4s5mL3esg3;EOIQLQ07&q z6`C*-S*s)me)Z4RyjT{mUb!2oH#+AT)NS41M-jsZht1Ib?GxO4K#A|>7gHvA4Zv9L5Spg1E!`hrunP{M`Ga*tqKvo=^sy;dN8UTQ20stUN^ExKfZWO?} z;$4rgcO^E=nmfc$#(}_*#I*O3Np*n>T7W$^YwhN<0D_hz_g! zmqYm>XF$(j(S$XjuW_fj-OS~H;8hu|jS~HT3-0LJOSY3qd|58ds$)z8e|2a&@{oEJ zFf+%SqQ^n?d()v!!C*+bw~Y1&b(&WM0bfVVdAiY_!>r{VGpK%*GZTwt$5pEz?6@)K zxaf%c(iJC406_&8CpKI=2*MT_QSGCa{?((rckpT5M5J|&Uo4P2b*Cf-ztVg_&~GlS zYU`CbFJYIEo^sr<>yCv!JlC#;Zg&qfF*&lh&8ia&9EjC5kIHg&cRTZe z0Rtlnv~9y=nr;__9@C-e*i-s#hN2nXl$V`Ut3nv?y#_Yy=aGC_vf~bMSuIa_$b}T( z06nK{zhu?31v}yNp3z~g_LN>HQR0l+X`33f&9Cmys@vEQ(TvTHSO=TI2!sizt-E9G zY(}G@AOc%Wu77W1GZE$liomXl==M|j%6fU^{!p-9^`4Bc80=^^M*m-jcedYC?M?T> z`FXE?pZ6WZoguSQ6-qA33l$$&Ief0~t_)ls<8yRUD{*+2Lnh`uWWUTmiuNeJ$SA>6 z2t0aNC$XZBwE>U(g=rz12say^Fo&|wJIEWKNu00RGn2B~J9NVI-|I~jAiMQ`-o$kB zBE_CUj$Y{M-}iu|fS1jm+uyCYmE?rKGFM5LT)IB__^i&~Cz#57FV%VE>DBMrWkoGJShKdn;Z9Z~M*%{2$A7XiqS|GS zJgCrpPs0^OvwK+wI2t_eBx0=ahUH0wF7UqBn^@2}tq*eovdN1}kFAyQM!)p$ExzAZ zyQEO~3_F@>@AxReZ3gXQl|_OLKrB(u*=vI(&uT^n*~2(*1snb8(Rbes3(2ij^A7dN z=6`h$LbtIT@E=Lc_-+y39f`dMtqP=h&6E;`g00+9W&jQx*F#6*;2tZ(*3NU404(IM zWt>TWV~W_tce9Okh5Z%-t0gX`lQqK9tKE6ggNW8rp{Lo5=SR&F>?;HU+HGPP)Wb2- zvuRcctd@*hbmHA@IwKCW);W^B=y$EK1XfGNEIP4n_TCsA==yp6cz?6{3VlE-%9(2W z0laKOlPiPw*S0+#5SqX2(jDkv)pHcxx6f*hS1+0@)P7zoY1&}Yzuqo!NVnCTRld-r z1~l+XY14Yuf0hS-B{P(4=`bhZP(5PQ`-u1_!W~`&<{u*q270mp6}snPxIfQkj^W*{ zaxl%Ze+PsKpC*wCRRoJ#ROoRQ!`0aig3Hl_?rvu}^i0|EFW7yS8oCS%2g-^pXIqwa)Zg|*|{I%mJ z=W!1q#xq{&cO9^R(EKImAMd{F7G1-~`))5=a%m1Vnd@g?AgQs&F<-5Wu=Z|eKHk!g zSgJ5T$UZ{@!l3^L2(R7q!2Yl7cvo(GXa_@BaQEQ%4Vx+>JBCS`h zFy?D)Or?6BT?0ZFct6V=>I$0_1K7ryu^Ei^uox169ZYf#H#CeDtghXcligu1u?ju# zG~PC|6G;FE!bh3M37bnc1S#4-YAqOEk=R%+0d_IhQjES|Y%|5IFCMq}%o<|tN`L{f z^SCPijaQ!j@2vnVE^{!A88dAEo@L5W2R8;DdH z8?Q1w^i}{y3=Ho+{A+&^1rR=p7^D;lefTs}kU#!XgEh6!6tRhuu+Y~f?f+aPJ}Jpc z7vuT8W3GzN(;S2VmX@9zQT1pe3W+IBzQ=-z+a)nk%Xapx%}}JX)yUBiLU$9d9=5th z2X-#StDEPWJBW>(DckRvbL^USdTY7|lWGS8p$l4EHq}9Ib$K%?7a0H|u${Dq=e9O; z%wolE@!AIoo3>Bzd}4x<{AUL040DN<__B-M+rery0vt#*BAmL1nV}d>bFHCp(LICm zia~5F8-V*yH92z~5$a3WZN%yl?cct@g~8z7BZwLABeUQt8rZ%2Dj)qJW>@}gi{=&q zFs;KX7i;gdt0U#NGtJV8))oK}*tWaj`O_!uV2zp$qQl02X`M+p-nS6?4i8(A?Q>Qc z3jxs9?KHOiodW>qH$1EWJ)5RQL=VqsxNY>eYas>rP=N^nmy6djJM(W7ni~X2?5ZEp zZfcob1-5hxB9M=A2gPTjFjB^Sw#o`JyUkW?53}+7xlBho01X_zt?2cr)?Ewo$Fk|X zC?#?DH>*roI^V9@Pv|bzh+T?~jLFj>w_(OqYXb|tl^`}Ru{W17t~792;`G?}krbeN zjvP22fS+U~kai^ItNVTRH9*oS8{+?-`6_z#CQ$0l_*%uuT7 zjNum9q=hDR#xMPwk{Zk90OmB9?BU6$>Yd0X6ba#I&V7+`rH2K((&>rvT!oD?PXR zlm|(a_>z;}|67baE=zaTTOFeYmZ(oGN-#)r) zw@WI>80u&;5*nKTHFDu)JUxCJQ+&v}*;ZpvoQ7@NGb!e?OI;UrdE;D*22YS*%0=MV zRlWKN@ zC!Y7yC$W(CNYk8MMAhvuYa;SpqvL>9^_8QCfdpmEflb|>vx<00%d=k+XH3KDn<9d5z z!p^)CuaR^2N6ocf**MsDbmLie5Hmyi-wsOrqM+_L)4lfEJLx1kdZFytN*OA za4v{3WaneCSUqd2C5xWdjtsDeabEK^2D2b;-%ShYW-Ro6oMFlSy>9W}d{Sc(f0^F) zIkKLbRVNq>i8|z8c~VOCX3vh8lWgzj%x-6u>Q@xNX5MY1#!J@%(wt`H3FMC2(;P&k zfQ883ANI18e#&r|K2+$x%JedvHn$T=2rf9O)N*acO&%6iwAudA^o#Q^=ztpex$)PuErGDq$j22;#~CDEIfl5uDK9&$(}WNRVUg^xV$Gu!KPn^H-oc!q zyX9OG0P73Sk8QZI6-E?UaqYv_QOYrMUfpzapED!> zo>Z%X7!W4BIIii+Mi^0K1=TKVu97Y=d7Zl@&Mx0AR{3nsP97G`=(JMXtk>bYZ6Th9 z-O4@8HgM&2-oNdbM`|oq$Q-hE@QGt!fE5cxw$p3?;f(c^I*;~~k-<^{AFYb~A1fxZ zVSqW*R5zaHrL>1P{iZY=%lW9>cx;=lyZd)O3>9liJY#To_Kxc#XNhkEL#%e@JvVDU zPgUp_W6&waN^p(6S`ox=>`mcOnKIg#R7s*3j???2vuykBZTWHAWmh9nG= zdykbv>0A+kfMIf9XW5T?u}lHD?_Qa8227LAy#ILr@&3c!=Ex3D>}9*+Z-j|)I>KMCceqo39t>hBF6k?t}sb3_YcWsC^ z`upp>Emt^YZOJ-LOWfWn79!8@nWhCPCM_)$;#G&qWa2LhASDj^ce>eo*!{l5hO6JG zTxL8Yn$uvDR8r~g)n~`i87JBW)st45=n4Of>?_=xHL2AuQBs*aP0M#OfL+X|BL~+h zlzG0xkn~K*=-v@ZfM01f8UYnT$6zlO3w>4~7Nxo3S@v=O2otVk?<7lmb>9Q~Z>ZVJ zukt8ZDc7j1;br;8YZ1^#H%#Mc1OFZ`mM3*?+Rx$z-}mc#bod zd(1%FYbMT79ab!VvFAoDvz($&g;V#6W5R?kd3VfYGL@MfWM3felpj^8dbHz4ZPJ2D z_r-S{<^tHkdOWlF%(akIko;=y`qA74vX#<}G+j?_{vS)0a?!e@ zVW`JzM!S=0bqL+d6wa8pAN6`25|4mRaUeD1qf;VHc|NGmd%^1#Uoj=|f`}Y8Cq^^Bh@|K=y+e=!KJE2$JQ^qaPH~%qUP*ZXZ5F3sA0u? zHZ-v32;(vZGkiS-EmKq(dRDpBmL}Q!MnD?doeN#_F34UB9sL z=nRcBOI#JUNm1q1mo$rc=1)Br1ACV?6glNz;?<`9`=&rBJG2x6O96OK%P5W}fka^c z((7;2+;)d;iV@wp-!A5ehg&-FbP*G+`;+*#*vegY8SrE|GpkN8LX`dY(m>qX)@=mt zmfW@#Q45Y#z^ETqT7-498jXUTH#(k}lI6;7acY5i)lPYRvXPUBn^$X>Xs8mKCe8DX-m<1?Ns($Xm0fp| zYoAbGB3*SO6wd88{tLk9?h#su>TV#5U5_V51Qw|34VL zrP(GagSt!<05mOV=jx5ak1Szc7Uq&>YZf~SF}Kbxse$L&%{#Fb*AY*tWsAm-L^uDuKZb}_fzNAJ^lOc6Wy{93!D7M#4;Hk|^~ z0eINMrUSV6RhB?Nh{DlvfydP*#-vnU*Cox?7dCFvTE!|vM+Ejanf^7`e#f*o_%LnF zPD|MscrO&r>0|i~U}Vn-EkJcyMYaCxQP18R^JLkqDGk0?^|49wWaET&CZB62#ohVB z#*gtb9_BnU`xiLGV(zupK8^;F+H}^B(5Sq_f|k!V9UvQ?rF)roG``&~R;03BwyxY) z0BYp(^u9%kjWu$u zo=I1kRXc93iFjV?Ht!1JyAIpLOvO-JD@OycP_R$sd%tj=#*csl)JK#;szS(>ZM1vi z9}yxWZefi>T2D8cF>_IX#HrO+-Qx1lJIP)q77DcLouPRtCM_uy;?;!0?&1#$hCb)I zEk}IB_xlV-i+RdRY`Z2&)PNll7$Le_yiYW{ybH8G%V_3?}>SZn#N@c#tV81 zTcwhvRkxXAw738v*?)Pzi{>K7&70T|+`&5X8ah`bmG!UFE~8`B|G#PelpQI^dyFcqX=hc|WI3)6q-T!xKlfdEFpf7^rb(VGw&g8@+KPKiYiofsm)~fFxc`bu zUlsKkoyWe+{yWB?;@3wuqNm=2dDco(=-ZQ-+am-9tu(EwvYV-qDbX8X6@m(eJC$#Me-up;E%nhK9{3l;5*A>s!Za^LQl^HYpt3TTSh|u35LUFDH zwhn`OGe~EAaksR(#@#Kha@L{r;}ph=wbr2xOQ@WrAws_bP4=0OpH|(pgZZnV^$~^T zFrK2QCxf}#PKU%?VtcC76ypT_rJCgNB3r&Nrxt1s8&sK%VXhiXws5$}^HQ!mUXQ)t zNlw)JIP6w3CvdoERLys7pdys!_hG>wWjqWbm4z#AzYi@v`30!LFTn{=%D5hn(2LV z-^Vp44eo2uI#=fKSg5g%!xrE25<|^Rgno}~jVqpCeMx4VpYD&zFzOs$2*u+=AGWrB)N&I{5kM--y9_=p)+|*;601ON@ z-mZfFwhhw1S6dh!0#b^jx} z2%^l?nW4cP%)S>ThMF6I2>o9)$6?~Kh*J7=+r1JCF{1Xm#hhBGIgBRwPklufL7+nR zi}r$!vvU{bjar-npZEySci#DkPhjNYRQF-76h!D}z{!3Kv6H)MEAGs%ssm>#L@xlq zIAMRuAM@`7)t7t)m>O_w*{XW|ZhJ|Z>v?#*kgI0X!CZSm;YXWo`u1z=SyK}IP$-!@ zGc=g}+4iEvP;)aLE);IBRjkV57UKpl4xYWFP|wsZTlH=%+w0iA0CnW|)>f7|yPdPu z*8$X!TKMwQez^wVxSgf2Q2C#^361}})%s8HqgUP58S7q}0f^9_P!sJZe5TCb60b=g z46TaO>e-(5Af^kyb9-E8Lg%MUHpf?p=sy@3VxmL*BVLMr z06@9iH|=>HXJ?7jBsX?I14(A=*pFVh9N>F!f*Pnx^r2b}YHy0;G=K#w{w<9ueHE)- zhFMJJ8UvWKh{%?2zviCRO@Su+9Xn*|?WUow8cpb+<~D`bPQ4Q^cHeCRl`}pZ%<%Qp zRy?<~>D^xH$Q_hLgjm%i&e=t?4_hR)8Fh`>>gyzuLDyuC(#N(A&@RJ<3l3RoQmQc< zsnKcCI{=uk8d@J#SPNij3p%oxDjc@+b+GLzPg6~xj{Ny_71k6%A<+Fql=)f`RCtpX zakR*`FVI2Ftz7P>^%;e2FPb~2zL2)SQ#0KvwW3E^ij7oj!kpOEr^OAnI1foIwkbKg zatiy%_R*bomdH*qt%DWiwzM~mtj2Uf^o((Tv#tdIn5)Vz9M^9JC@m%Qf$LdQzb5Pp z&@2p`bjB_pQ?CR!75Lx$ZGCQJsvJBlxO!jC` z48@1I8NmwKTE1#H=wG8Tiip2LZ%q+2My%q(WjxCO0EkKiwRcR3zg^IL=2;M67$D87 zvh``L%8voRc2L7^cEyLB0X>7N3G4Xx`}9fo`w}~6Ox2yzc4RAx+9%}AcU!_zHz%}Q z*a)IFDQS~~mWW4OFjSB3_=p7B!4U1ZQLBug;%({D!z}0w$#`H~&0c=B+ky$wh9zgZ zYj)gm$a5qTW@CK7oYy=3^u(v;MaF9K!`-hji z9XVk|j$ih^XzqStf&dHox@r$RrC%}(ridsm-K}R|AOHZ`1t{_;=a{tNMa`BQKJNdM z;QxgKugbTsr3)=CNn<$Iu26$dbg|zcpOMw(_>RGb1vP< zzd4oarrfqrGq1LF8+nOi+Ff!P`^0_ixCqv};5ucU+i%0HxkK*%fX7>F+Pyp*C-S|& z`X}72xQlNjGhv~?iKdy9{__6rw43Qrlcr4zyyDJDHTQ97w)A<1ugHi)Cz;2Jtqih$ zs6r1j8m~|ML$DDDOx4=NYN++Wi?3KTPY5*deLiBR_>$#^fQ7yfH!mFR8WId!Mi^#M zNIMu}25#%FrFSYN3hQjxUq4iG)KK|CH?-_)BOLZ$M0Q`7vD%_qC$5w7#_~Gn`5AXJ^uOJ zEg>Ek>gE6)$_~ung!^(nb2MN2>{-+vG*IqfT1Dfm?EoUM&D8o=Eni}*q0_PtzpEs% zwEMbv*_vacm3|I!F~B1Yvj_+WP1H`^1pvY!8DEF#kW8?&@-=Wv1bZ(uEDOdevoe>zdbBqyGoEhSg1}@W~#8*C@@cDz&8Taf( zBsG+n2K=0e6oj2`Gb@p0!W@aD(GdmT4sgI%&OG~CL|Zx6C%2wieM6>IcHJK>KPKWr0E6Czq&X5vqa#K}bW@YV>8)ncW}Yg6Aw=Y2zO#h@gmS<7 z$d8;f-*u-5E)IArWKO0{G|tjaLSB3$l?j08<@xUyRBy?|g8sHH6VBsPFx7dpY}J4o zxhr7$=d(wsuhEBl8gGuCCD>O8ynC@6?in12)+5IFc@a19x5_o9{<~0Y7Q=PZNfVa@ zz&6hPV2)&SKtP%!ku*9Y$(4HR?kPD14pko;EB||ldk4S`T{elBFTg^+ftAnWFEvKI z>`7)<-d&5vi$IBh82rF*_e=gBaC75I8II~h^2m#Cq%zsTdTOsq-hG@0sL(wR!`&GU z%PXA64%SAh;n(7)bz=gYv3Z}>8ZPbgqPxWp_-vOH3G3{Yjf)~Zi!L*Zu@pkjo`FF5 zAE);3!spc^{M-?2caf&^WWkQ0Ww}t|s1B!@SbWNXD&QR(&Ur8X;mk48v}!h!G)E#~ zbVL%2{%)1zr?uEFnCZ*hrxo9E$Zi4WU%r<;B};V{pJyof7V`uG90=AiO*y@mUVW;# zkxX=u?^~B8&T$&{Ev%WatV^CYX?Tsqk)2MNlvitC6A(eJF1$^nc`dVP(%d3E^5Pq* zOqBRxR{dqJ%i2+oqUlJmaqW(bpFP1*&w(ykp#E31`q_+?bcoB(KKOA;=lCc1!1!MM z8+NnGKV&%c2&yNo3VcmF_e{hlvK^sck+1DEROe9qxJuQJw%n*?hVOS*de=dY&JGTY z)%?q=^e}lzi!{H?gL>Y6egbihM8fEZBpTR#_UC=40y5W$S$&T3OHd=8^V<)T75Qa= zmFKBs+|`-R&UW^FBkhHAK~M_tbZ?5br?sj8hDGIb&JBrkruyT+f%q8BUS5^QJdZjo zF0JRT+T;-mruHT;zLClV%cVz^Y9Fk4QHEsa4(1HoEq@ITvAQ2M>Q^#DQ4?RgpF`4T z1|H((m^85W7D4JJ0QkC@#<#rk_da2(Z3eK_rYP8I3nvV@;T+xw??2vuy#LrAZ1t7U zu+zE&;`GqfLe$mkUTb zrsUC;d*(Slt64tom1od#Zd`uOgsK>*P{~k>qRIN;$d90mZ+y& zaR-k26oYi*=x;glkl9~x1mb^!${~S^q4a0-R>Iup0NBeP%(zno0FFv%V|qDu2_&aq ze`@sZ^t|P$&jxd^T6wC@F-%HIn>xM*sWx#QH9K9iA0(k{ssco4G&??MVimdX^sT3s z1r7UgjsmPZEJFIBQb9HZemjg+eHCim06byTY3bezJAdxI1iO6A&;YB~Lq4Lp7Y|?F zyReYwX!XYzUXV<;GDp;XE5gMiFqL_%ja?@8jJj6RGq}m^(!Bf)3XRilfI=@?hcvxK z)3pRHqo{W$h33o|VL?12a|nDxcxYK4l4^JQwqr+J-7KjY21hzx3v%xStx7Li!aLrB z<1LG0Yp{NicT-m{b6=Y-<{jHw3JG8=tbUUBIVJ@_2O!Ut@e&@+ z>OfWzY6oR!VGl7;29_hJ6FCljjEP&ob;)5u2hs6KQ-fGgsT=;;3VgQ8nFgWB4dQuKOxot3Hk0NK-)0$f}wKr!45 z%uu)d1q%9(GW5MARHeF>g%<4Ce*qjrk3CEiaxYOb2z+N<$7Ly_s>CX zY~@rOkCK5AwoyNPpuR_uvDP-pG#;Q!zh%h)-7icw(_9K$;u$TK)&E8p4z7$kx-T(t zSD>38bht^lQa7I4=2rE)73{J=UFTLrvCj|OZ=vGwPp!q9@T%UW+lvYyQ)H~PPOt&I zFLo$fuVY6NJwfl?e5YsFiDz{|&A>0$y0wsi4FhnY|6`baM9vQ7J#cw&9ZMF@>F_*c zf7W0Wy{0PQ^!qj4sxGZLjN9!(+oZn#*rgmZPdHowP8+f0;eGRspA9W+)$AOPEP{!J zm+-LXP41XO7Ccw6fsHq@>bec8)dE+ij!QLzy|>+L zAjkTZDWc|FzuxC;PZB`V@enaEIF{Vz-PNvX75zr#YQDFvbLbYcsI685J6ekRrB&@7 zHHh_eef$?g9sh@{qUH?jy|M#@c6>mgkD z9Ff@f4JKdJ|TO9l2x)T`elVJh>E#FLyBGlo|jNgH8_b=D{-1lFQO zgZ0gZ>|{Vb`WcRxRMuIm4(KLKO&)uKDIsi2Vc{decnSKDZ*;@2C=(rr98c>`!~5Tl zGE`H8BKcPDhxl|RxVYP_pu5YwR{z>6m2BP4$rdr~qybCP%`OD16#F9_yyP&AL|t zkG_!n4t-at|a+tXRc5j1gS*h^Gg17K4;t#R9vSZB>( zx*RZw6*jiO&oobP{R-M#=3~F`E%oe-_{9tiMbZL{3Kx(sRyiQQraC!h; z>GDR13vh(sx40+*Kq($R28Npcbh*o0{55fQorlR4PN;P@7-r=jY;eR~=iKy9IS(?1 z9Op1zp*#*O%Vc$1;?V0xgjyXkz1&X4QHdX@6Jk? zg$jU3Qs(R^>Z3_FVQzCMH0QmqB-3+`Hr2J&yhW34w6M7a@@=J%u+;crr{Youv1CS& z@q>@MVz|~S&GdSXJ_gvemvIkkmoUB;o02Uy&BFc?(_g#(V1lEhw?-!TD0Nn4ZM>9b)SZSW(Mlr!Ez#dJ#`tu1>ofo0+ zZrN_n$Jk$pP{)v&gcl;`i7wA`57_x8a-9jp80gjn+rCT`PuQDZZ3r8FAfOZv7Xvpf zOcVq)Ji2DyCSHgt0H9V2-S57G035WWbeGDQ+#R?3kb&H4qF148SahP@#PS~xjyaiv z_dH%$+|~@EORa11;vq{V7DHy;CA{Ey4`3&r(gv(7_ag!zl4LT>j3l)l_Xf_4_?xUw z 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 J_umRG0svKfuu1>` literal 0 HcmV?d00001 diff --git a/pages/nats/assets/scaleway-nats-overview.webp b/pages/nats/assets/scaleway-nats-overview.webp new file mode 100644 index 0000000000000000000000000000000000000000..c2240019b0f6f86d600f1628707c08c0e62e2d2a GIT binary patch literal 38086 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 literal 0 HcmV?d00001 diff --git a/pages/nats/concepts.mdx b/pages/nats/concepts.mdx new file mode 100644 index 0000000000..c703c92dfe --- /dev/null +++ b/pages/nats/concepts.mdx @@ -0,0 +1,78 @@ +--- +meta: + title: NATS - Concepts + description: Understand the core concepts of Scaleway NATS. Explore fundamental principles for efficient message handling and service optimization. +content: + h1: NATS - Concepts + paragraph: Understand the core concepts of Scaleway NATS. Explore fundamental principles for efficient message handling and service optimization. +categories: + - +tags: messaging queuing concepts nats +dates: + validation: 2025-04-01 + posted: 2025-04-01 +--- + +## Content-based + +The NATS [publish/subscribe model](#publish-subscribe) can be implemented as a content-based or topic-based system. In a content-based messaging system, the subscriber specifies the properties of the messages they want to receive, based on the message’s attributes or content. Message delivery is therefore selective, and messages are only delivered to a subscriber if the attributes or content match the constraints they set. + +## Credentials + +Credentials give services and platforms access to Scaleway NATS, enabling them to connect to the host system. NATS credentials give full read-write-manage access to your NATS message broker. See the documetnation on [how to create credentials](TODO) for full details. + +## Message broker + +A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. Scaleway NATS is a message broker tool based on the NATS messaging system. + +## Messaging and Queuing + +Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#nats), [Queues](#queues), and [Topics and Events](#topics-and-events). + +## NATS account + +A Scaleway NATS account sets a scope for any NATS credentials, messages, queues and streams held within it. You can create one or multiple NATS accounts with Scaleway NATS. + +## NATS messaging system + +The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is a distributed messaging system, designed to be lightweight and high-performance. Fully open-source, it is part of the Cloud Native Computing Foundation (CNCF) and has more than 40 client language implementations. + +It implements both of the following: +- A [publish/subscribe](#publish-subscribe) model, designed for real-time messaging and notifications and event-driven architectures. This is ideal for communication between microservices. +- A [streaming service](#stream) via JetStream, providing persistence so that messages can be re-accessed after sending. The streaming add-on is ideal when applications require message replay or historical data access, such as event sourcing and audit logs. + +## Publish/Subscribe + +This is the primary messaging model for NATS, sometimes abbreviated to "pub/sub". The key feature of publish/subscribe is that the publisher does not send messages to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. + +Subscribers can select which messages to receive using[topic-based](#topic-based) or [content-based](#content-based). The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. + +## Region + +NATS is available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for NATS. + +When [creating a NATS account](/nats/how-to/create-nats-account), you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. + +## Scaleway NATS + +Scaleway NATS is a managed messaging service that leverages the open-source [NATS messaging system](#nats-messaging-system) to enable seamless communication between distributed applications and microservices. Scaleway handles set-up, patching, and performance optimization, as well as scaling to adjust to dynamic workloads, and backups of your data. + +Check our our [NATS quickstart](/nats/quickstart/) to get started with Scaleway NATS, or our [tutorial](/tutorials/large-messages/) on creating a serverless architecture to process large messages with NATS, to get an idea of how to go further. + +## Stream + +NATS includes the JetStream feature, an add-on to its pub/sub model which implements message streams with persistent messaging capabilities. Distinct from traditional message brokers where messages are deleted once received/consumed, streams retain records ("persistence") of their events. A streaming broker is therefore often likened to a distributed append-only logs file, where every new message is added at the end of the persistent log. Consumers can be thought of as “cursors” in the stream, consuming the stream’s messages according to their filters. + +With NATS, you would typically implement a queue as a stream with a single consumer to read from. + +## Stream volume + +Stream volume is one of the factors affecting the billing of Scaleway NATS. Stream volume is calculated as the number of messages in a stream, multiplied by the message size. Or, the sum of the size of all messages in a stream. + +## Stream persistence + +Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. + +## Topic-based + +The NATS [publish/subscribe model](#publish-subscribe) can be implemented as a content-based or topic-based system. In a topic-based system, messages are published to “topics” or named logical channels. \ No newline at end of file diff --git a/pages/nats/faq.mdx b/pages/nats/faq.mdx new file mode 100644 index 0000000000..1cddafe73d --- /dev/null +++ b/pages/nats/faq.mdx @@ -0,0 +1,31 @@ +--- +meta: + title: NATS FAQ + description: Discover Scaleway NATS, and get answers to all your most commonly asked questions, including information on compatibility with various services, and billing. +content: + h1: NATS FAQ +dates: + validation: 2025-04-01 +category: serverless +productIcon: NatsProductIcon +--- + +## What is Scaleway NATS? + +Scaleway NATS is a managed messaging service that leverages the open-source [NATS messaging system](/nats/concepts/#nats-messaging-system) to enable seamless communication between distributed applications and microservices. It allows you to implement your messaging streams without the hassle of managing the infrastructure, scaling or updates. + +## Can I configure Scaleway NATS via Terraform/OpenTofu? + +Yes, check out our [tutorial](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) on how to configure Scaleway NATS with the Terraform/OpenTofu [NATS Jetstream provider](https://registry.terraform.io/providers/nats-io/jetstream/latest/docs). + +## What is the NATS messaging system? + +The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io/), is a distributed messaging system, designed to be lightweight and high-performance. It implements both of the following: +- A [publish/subscribe](#publish-subscribe) model, designed for real-time messaging and notifications and event-driven architectures. This is ideal for communication between microservices. +- A [streaming service](#stream) via JetStream, providing persistence so that messages can be re-accessed after sending. The streaming add-on is ideal when applications require message replay or historical data access, such as event sourcing and audit logs. + +## How is Scaleway NATS billed? + +Billing is based on [stream volume](/nats/concepts/#stream-volume) (the total sum of each message's size going through the stream) and [stream persistence](/nats/concepts/#stream-persistence) (the total amount of data stored * duration). + +For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file diff --git a/pages/nats/how-to/assets/scaleway-nats-create-account.webp b/pages/nats/how-to/assets/scaleway-nats-create-account.webp new file mode 100644 index 0000000000000000000000000000000000000000..12653712c9cbc9bd0feebd3cb7dd5c6f6303756b GIT binary patch literal 19190 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

KiG)VMT`< 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 z zM1)kie01fWInEEB=EUzBM1RHe5vB1h*EUV9qZ$8C&(0Q{l^PdGV;L@z+GXp?VC?{K zDwM8;a`d^_yrf2)c1V%c>wY0jG!c*@znSHGgGI#_~Y=) zig`KUm_`--M?XkJXf*Yx=W7;gHikx`K17uJ+C?LnAcH*>Z+3BRw0ecGvWE7Zd%IGW zgXUIvoYcW`_ocC=sO`DjYA{m*J0D~`q4oX0Y8 z_|M9*B9Zl!BM1KM?<^3Gw7i|_l6ix~o*1h&ckP{(`g(%C^IY2+TYq@*m}QPFhf+LT z4BYO!&x;LOVh3l9#!GMv>$nPkww4;MemGe$p@j!Lo1|aL>erAEpYwEtV2o-ff%?KuzDjDi=NB;s%(J zQlr#vX6`W)PwKI7!OM1B_Pxh5en?&Pxw%}DyOjWjUH0eICu9qA4>D9!#Jati;6&d_ z{+70xB?}QDQLY5ge01fWwU%zRim}PmD=^pPdwQQ%QJR$;_S;{CV}k{4 zOc$H;S-4lz^y>ca^40gR0_+pBul_t?s_`hW=DjWyD;Vz#vKTNTZlJoXlG$(1dYnQL z@3(p4-gB&G4&xQPfr z3CB#b;6EnvhOhc_bsTeTRbSivnx$7`*kF|m8J99p2Rtd$3 z_x6AY4F;c5|L{Nt38W(Eis2JC|8T(FSG%@3g7}T!NKoBnJ*a?UxYL=OSa$!rmlV9} zT?{zZ`Da^%%X1W4<4M8c-Nxw{BrQERo3AS*OdmY3&z18$k}^2f2m6cXhU37pY*vtB z1rK`wI2}e;yWPhnnE?{dv#utyh3mS%M#TjH*6*h^PJ3eBC4p2VRc_piS)LOW8LKT5 zpx<3o+A)y8*&V1__ZKwij2y)VA4qj+m3eBxyAUh@5>mhf+Lz3=9v84Us8B zy$v-3=yKpEA^w0`XM=8B-Y;nw*ykk+g6b*fUM6EgU+X2$({s-@oE}Y;{^eF+0Z@tU4WtBIzkv1GP%}RJ;jDmJr~s6}mF~1IZV6v1z7Bej-k(EB<1t-$VJRu@(;W^SxVyvlg0 z?>oZtDa^C&kSXtTsSDn%I(!lLR)T0s+R?;Z-A0Y`JUHN|- zc9Ffr(jNa4&<6hl%W_*4rG*4eN2MzIrDs}4ou=F@woU_rLQoYqk2t0*6WZvQocoWk zB}2IpUligLom>Em1tDr|Dai-ckY`_DAN%=Eoy#%vn8W41H{Y1Z(DKF4&a07maAfHvJnVjh z02t5HT12gpv9}_-WH@Ac_rKY9ZTJ#}Qxdx9i7)k9h({?NJ_d&CBB+}8FSfX&*r4HO zyL%qatEl|*18X%f(n5lwYQ|LMYKnWPvt30#21Oaj+&wJY2^e6@d0D!i8SNkWpmJdo zwNPj-`d%NMx3*XowSr3Q`yw+n-O4?sp-ols6MTay3kX$$gKC%m~*blYTLz1Tos z?4eyWwn-1ZSBGQGNlt4qg;(LEt*{iEHV*9CHKIlRHE<1<^}Lk0uCcA09uMn5wVY&q zbk1*6f@+FbH%IJw&edRvsKCbUZlP_|+@h=xA6fVaN%-i>Ki?d(_Ya1Kkzb{o+sRmq z{X$sqUnn(D43B2+51N=yu1a-X(Hh=&{wdf|fVGF?`Z0&j9v0n|*QG6PCNLEfFPak9voc<9?l`_~z%RV?OWN*c!EQWk&OxuSDc4S^%KaoCeLgs3a^MfCYkRaZ1ebX*5UdjQ$K<~w@=kjKi{jYqQD zkkvww@x8&V(7H+#^DNyZGcxyTUHmIStMn3WqwDS=$6x%0LOeta>_(xvJ2X!IyhhSB zn%X9{5%ZF>)UdfW=}K^dMqN*^N3~ogk!MrQw>A4k79OzNeQoa9xnArn3!10}38V&6 zU*13X!Qu{}5`zitN9~X5nIvDj$0^Q6Rp#;?wv2HlEBHC_gJ7`pzCKFHEr^t|*vb*^R zN%-i>Ke!s1wIF^^e^Xohj|DJ=W6&tWcgjD|K+Z1ZBA81`}0dy5wFuN8q4a&pn> z4^VUs{q<>4f#Cbr*}(+%=v-m6gtII<6k*z44?EH7Bmey3)n`LY; zcPp*bj3@UWOfJ_`4GHlc0Mw$3n_4_=x|D~{14{^ZB4-p6s8U9RW^<3)jZ7k8XI@&s ztV*8|mc-{#>qnMCBvgqNU1|o1IJ(0A17Y3#N61OYTTa1&y^{A z14%8ejVO7NREPcZBgziek1T~qs1hr>-1r+|dHj0d=)j8$4lJ{v0m_cDh@^tax9?E> zUX_P^P|FFD_+_l(g*WDeBqvE5&O~_kPmPzytA8TY??MjGoH=87kBc)P8-DIvec;5A z&@h}+=L{Y;ya+dtMgD*3s#*aIt#6DC_)4o*`wI5SRnKD}i+MV=Dqv&pH=>T=0+VeEY{bl zZg)N^3E|C*kl6;h>-FHG=U}#KwQsj4+&>jw9D- zEoQhw6-izTi)=Ha}pFL5)T+_el+qv2#xqANLeecJp zCpj@f#_q~Hltk8R9^H2JC&+(}sz zBeXvpHk6ts*PR-^?*=2Xp+zy3vbHE$mZQ8p#f!Q*-6P@DV?$ zE)p5OTn0jHBo>4!oXD>t!@v8zy;duKDgG%LJ72Tf5yBhuutd3kD!e>i{bM&Aj}^4H z+waxD_l0NcjeCTt%_};C^dp=rVqckeTk-lq}lzF&Vtvm_--fFMIytO zD?^Em#DY+T6ZutS_=FdHyQ&f{7~~h^EYDS>@Ww#7e=58@Uj1XKiJ(gzN^$v&_>8lZ z)_Aw`PO0b&(gW0X5VmD6X1S;= z{W?!R*j4cpKP*qb{vTgOID^bYnR*O0L{+>yNkD0T07Qt~>YVhBk9C{Jz0Yz5{_oG_ zm$;|<($%|_0KQxXLTn^VK&o&eKU84YB)A_ai!bvr-yW|0rIBpN1if*5O^J+0fgAhM^;Y$`X}|-YSnu+11R@ee_;MKtv5_zVslti;V9^gNDs1JRoYWPl z{h*!_LDm8Eu+TsQx>GqD@9wcs?w<-Tk5K=RaFca~9pk=C>jn7(O=#1Qp8Jo`#Y1_r z9z+JeH6R?zxoqm3!LuXi550iR@5pw|q*ek)!bwgrTZh!F#_c}dFz<>l>&~8Y-z6%i z7E?u+F`6KpR~pGcg7umBb4wD+8Dx}f%G6^TqpDJHC*>cbw7)&UOr5Zzcg2&oIv5Sq zMKQ{I8p*BT;}amw^x)i3OnwC-Q@=A68U0 z0;LztQ~^IGOV}9NP3)^`rt5ikkA-soRCsxW`iFlSefI5*Ubd|h#XO6b92%j%#Z58< zj_nC`!#SvQ1`k;4p>akBD2B1Y2NK|H644BF3W7$VTbeH7;q9#}t2%yl3X4uYZtIPg zx|Q*wq4QTLXOR6j-w0EWX^g5$$(@wnFQc?Sdn!>6bPIw;S!Zbq;o;0CWL3hkA>8Qf z-MHzLbp^-tl5@y)$xtN386YE3fG-ySD6x@P5UOw@KSn>SIDEu?%=Yr^g&=1IuDdh|dHq4TeLFrBE3&&Rf&x`jT?>~+KTYZdHZ1tgkvDHVE##SGw z99M<+AMZcjf6qo=U5HeMU>OLOh5)xyl{ z`;V7gFb!rEzBLwy3NYE3DOr(7PRsk^rT2o^*!A#z$*xf8>%R5Z*s~nDZ*=8xwi1p< zR#7pSRhwj$qXWZ3v;y zqU62~ANMjqiuUtu!6b~0jST|6<3B&=Of=rPEE5Q(lOq%_Rg0)>h|njNb;^C|?H-xd z?4swBrO})WUgnIVVo2?OT%Zj#yYTrT(ug<-i;u*y%UKr%T2i^*N-lg%?*hk4%46AMb#qp- zVs8_l=B`A&!|HQ<^454XPcfS3xqjwNTRW^>yV3rT~x(WU7!zJNh800IqWIh>G!c&wd4s2uQZPTdYd`fzIaJY z7ErtGA(UP6uk+PnW7orvr9P2G?|Rpr;rES`-<209Js@%VoHSP?zqPx1T?k)`{>#?E zNuQGl>XuLN$|dbT?PY+Joo8EKO)CiaYj?inOEoN7mGEv-?tIoW=5^Z58tmAo1NjaA zUz=$uGce|EvF%wRK5JeVoDJ9ia+UMFasIj@Hg+xQ=~TcO^U4pebjRK|y5cZfF~=jTs2t3! zlViT)AK~l&-~7FF;mror?Y_T~Po)>X@tSgj+44Dse65R)B(XOs_Oi;kg#wy(L2(B( zQAQT`%&JGvl?PLBw&ciLjTd+>X%m#SgXv1rhzFTn_)pd$*yW~CBXPI@la+~*7mDUI zdsHvF6X`r?^sYxJo~sn4vLV9U@vMdqWedHs*w|p29;}B{*lL>rY_%y0w%Wo8TWvUptHS$_ J_umRG0svKfuu1>` literal 0 HcmV?d00001 diff --git a/pages/nats/how-to/assets/scaleway-nats-overview.webp b/pages/nats/how-to/assets/scaleway-nats-overview.webp new file mode 100644 index 0000000000000000000000000000000000000000..c2240019b0f6f86d600f1628707c08c0e62e2d2a GIT binary patch literal 38086 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 literal 0 HcmV?d00001 diff --git a/pages/nats/how-to/create-account.mdx b/pages/nats/how-to/create-account.mdx new file mode 100644 index 0000000000..eeee0cbf69 --- /dev/null +++ b/pages/nats/how-to/create-account.mdx @@ -0,0 +1,43 @@ +--- +meta: + title: How to create a NATS account + description: Kickstart your journey with Scaleway NAT. Learn how to set up, manage, and optimize your NATS services effortlessly. +content: + h1: How to create a NATS account + paragraph: Kickstart your journey with Scaleway NAT. Learn how to set up, manage, and optimize your NATS services effortlessly. +tags: messaging queuing enable disable nats account +categories: + - serverless +dates: + validation: 2025-04-01 + posted: 2025-04-01 +--- + +To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. + + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create a NATS account**. The creation wizard displays. + + + +3. Complete the following steps in the wizard: + + - Choose a **region**, which is the geographical location in which your NATS account will be created. + - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). + - Click **Create NATS account** to finish. + + You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. + + + You can create more NATS accounts in your pre-selected region if you wish, by clicking on the `+ Create NATS account` button. To create NATS accounts in other regions, repeat the steps above starting from step 2 and selecting the required region. + \ No newline at end of file diff --git a/pages/nats/how-to/create-credentials.mdx b/pages/nats/how-to/create-credentials.mdx new file mode 100644 index 0000000000..11a99bbeb1 --- /dev/null +++ b/pages/nats/how-to/create-credentials.mdx @@ -0,0 +1,51 @@ +--- +meta: + title: How to create credentials for NATS + description: Learn how to create credentials for Scaleway NATS. Securely manage access, and ensure seamless integration with this step-by-step guide. +content: + h1: How to create credentials for NATS + paragraph: Learn how to create credentials for Scaleway NATS. Securely manage access, and ensure seamless integration with this step-by-step guide. +tags: credentials messaging queuing key token nats +categories: + - serverless +dates: + validation: 2025-04-01 + posted: 2025-04-01 +--- + +This page shows how to create [credentials](/nats/concepts/#credentials) for Scaleway NATS (previously part of the Messaging and Queuing product). Credentials give their bearer (e.g. services and platforms) access to your service. + +You can create multiple sets of credentials for each of your NATS accounts. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create credentials for a NATS account + +Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/nats/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. + +3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. + + + +4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. + +5. Enter a name for these credentials, and click **Generate credentials**. + + The credentials are created and a button displays prompting you to download them in a `.creds` file. + + + + + The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. + + +7. Click **Download** and save the file, before closing the window. + + You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. \ No newline at end of file diff --git a/pages/nats/how-to/delete-account.mdx b/pages/nats/how-to/delete-account.mdx new file mode 100644 index 0000000000..33ab0b5a94 --- /dev/null +++ b/pages/nats/how-to/delete-account.mdx @@ -0,0 +1,44 @@ +--- +meta: + title: How to delete a NATS account + description: Delete a Scaleway NATS account effectively. Safely remove resources with this straightforward guide. +content: + h1: How to delete a NATS account + paragraph: Delete a Scaleway NATS account effectively. Safely remove resources with this straightforward guide. +dates: + validation: 2025-04-01 + posted: 2025-04-01 +tags: delete messaging queuing messaging-and-queuing service delete nats-account +categories: + - serverless +--- + +This page shows how to delete a Scaleway **NATS**, account. + + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) + +## How to delete a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. + +3. Click the NATS account you want to delete. + +4. In the bottom panel, click the **Delete NATS account** button. + + A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. + +5. Type `DELETE` and click **Delete NATS account** to confirm. + + +Repeat the process above for each NATS account you want to delete. Remember to use the region drop-down as appropriate to access the different NATS accounts you hold in different regions. + + + + diff --git a/pages/nats/how-to/index.mdx b/pages/nats/how-to/index.mdx new file mode 100644 index 0000000000..7bff246f34 --- /dev/null +++ b/pages/nats/how-to/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS - How Tos + description: NATS How Tos +content: + h1: NATS- How Tos + paragraph: NATS How Tos +--- diff --git a/pages/nats/how-to/manage-credentials.mdx b/pages/nats/how-to/manage-credentials.mdx new file mode 100644 index 0000000000..301def91d5 --- /dev/null +++ b/pages/nats/how-to/manage-credentials.mdx @@ -0,0 +1,42 @@ +--- +meta: + title: How to manage credentials for Scaleway NATS + description: Master managing credentials for Scaleway NATS. Follow this guide to securely update, rotate, and control access to your messaging services. +content: + h1: How to manage credentials for Scaleway NATS + paragraph: Master managing credentials for Scaleway NATS. Follow this guide to securely update, rotate, and control access to your messaging services. +dates: + validation: 2025-04-01 + posted: 2025-04-01 +tags: manage credentials nats permissions update revoke +categories: + - serverless +--- + +Credentials give their bearer (e.g. services and platforms) access to your service. + +This page shows how to manage [credentials](/nats/concepts/#credentials) for Scaleway NATS (previously part of the Messaging and Queuing product). + +Note that the only management action available for NATS credentials is revocation. Once credentials are revoked, any user trying to use the credentials to connect to the service will be denied. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- Valid [NATS credentials](/nats/how-to/create-credentials/) + +## How to revoke NATS credentials + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Select the NATS account you want to revoke credentials for. + +3. In the **Credentials** panel, click the button next to the credentials you want to revoke. + + A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. + +5. Click **Revoke credentials**. + + The credentials are revoked and you are returned to the NATS account's **Overview** page. + + diff --git a/pages/nats/how-to/monitor-nats-cockpit.mdx b/pages/nats/how-to/monitor-nats-cockpit.mdx new file mode 100644 index 0000000000..85f7191662 --- /dev/null +++ b/pages/nats/how-to/monitor-nats-cockpit.mdx @@ -0,0 +1,45 @@ +--- +meta: + title: How to monitor NATS with Scaleway Cockpit + description: Monitor your NATS service with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +content: + h1: How to monitor NATS with Scaleway Cockpit + paragraph: Monitor your NATS service with Scaleway Cockpit. This guide helps you track performance to manage your messaging services efficiently. +tags: messaging queuing nats cockpit metrics observability +categories: + - serverless +dates: + validation: 2025-04-01 + posted: 2025-04-01 +--- + +You can view metrics for your NATS services via [Scaleway Cockpit](/cockpit/quickstart/). This allows you to monitor your queues/streams and messages at a glance. There are two steps to complete to view your metrics for the first time with Cockpit: + +1. Generate your Grafana credentials +2. Access the product's metrics dashboard + +These steps are described below. + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- At least one [NATS account](/nats/how-to/create-account/) + +## How to generate Grafana credentials + +To view your metrics with Cockpit, you will use a Grafana dashboard which is accessible from the Scaleway console. First, you must create a user and their associated credentials (a username and password) for Grafana. This can be done directly from the Scaleway console, [by following this procedure](/cockpit/how-to/retrieve-grafana-credentials/). + +## How to access your NATS dashboard and view your metrics + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click the **protocol** you want to view metrics for, and navigate to the **Metrics** tab. + +3. Click **Open Grafana metrics dashboard**. + +4. Enter your Grafana username and password to log in. + + You are directed to the dashboard for the product in question, where you can view all your metrics. + + diff --git a/pages/nats/index.mdx b/pages/nats/index.mdx new file mode 100644 index 0000000000..6bee88e879 --- /dev/null +++ b/pages/nats/index.mdx @@ -0,0 +1,73 @@ +--- +meta: + title: NATS Documentation + description: Explore Scaleway NATS. Simplify your microservice workflows with scalable, reliable, and cost-effective message handling solutions. +--- + + + +## Getting Started + + + + + + + + + +## Tutorials + + + + + + + + +## Changelog + + \ No newline at end of file diff --git a/pages/nats/quickstart.mdx b/pages/nats/quickstart.mdx new file mode 100644 index 0000000000..6c366cfa94 --- /dev/null +++ b/pages/nats/quickstart.mdx @@ -0,0 +1,90 @@ +--- +meta: + title: NATS - Quickstart + description: Get started with Scaleway NATS. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +content: + h1: NATS - Quickstart + paragraph: Get started with Scaleway NATS. This quickstart guide helps you easily set up and manage scalable messaging solutions in minutes. +dates: + validation: 2025-04-01 + posted: 2025-04-01 +tags: messaging queuing queueing quickstart messaging-and-queuing nats message-broker queues topics messages streams jetstream +categories: + - serverless +--- + +Scaleway NATS is a managed message broker tool that allows you to transfer messages between different microservices and platforms. This enables them to "talk" to each other effectively even if they are not otherwise compatible. This enables and simplifies microservices application development and allows you to build highly scalable, reliable, distributed applications. + + +Scaleway NATS was previously part of our Messaging and Queuing product, and has now become a product in its own right. + + + + +- A Scaleway account logged into the [console](https://console.scaleway.com) +- [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization + +## How to create a NATS account + +To start using a NATS message broker, you must first create a NATS account. This sets a scope for your NATS credentials, messages, queues and stream. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Click **Create a NATS account**. The creation wizard displays. + + + +3. Complete the following steps in the wizard: + + - Choose a **region**, which is the geographical location in which your NATS account will be created. + - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/nats/faq/#how-is-scaleway-nats-billed). + - Click **Create NATS account** to finish. + + You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. + +## How to create NATS credentials + +Credentials for NATS accounts are not granular: they necessarily give full read and write access. The bearer of these credentials can publish and receive messages, as well as manage topics and streams, for this account. + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/nats/concepts/#region) of the NATS account for which you want to create credentials. The list of your NATS accounts in the pre-selected region displays. + +3. Click the NATS account you want to generate credentials for. The account's **Overview** page displays. + + + +4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. + +6. Enter a name for these credentials, and click **Generate credentials**. + + The credentials are created and a button displays prompting you to download them in a `.creds` file. + + + + + The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. + + +7. Click **Download** and save the file, before closing the window. + + You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. + +## How to create and manage queues, messages and streams + +All further actions related to publishing, processing and managing messages, subjects, queues and streams can be done via a supported CLI or SDK. See our documentation on [NATS CLI and SDKs](/nats/reference-content/nats-overview/#further-actions-nats-cli-and-nats-sdk) for more information. You can also check out our tutorial on [creating a serverless architecture for handling large messages](/tutorials/large-messages/) with Scaleway NATS. + +## How to delete a NATS account + +1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. + +2. Use the drop-down menu to select the [region](/nats/concepts/#region) containing the NATS account you want to delete. + +3. Click the NATS account you want to delete. + +4. In the bottom panel, click the **Delete NATS account** button. + + A pop-up displays, reminding you that the action is irreversible, and any associated queued messages and credentials will be deleted. + +5. Type `DELETE` and click **Delete NATS account** to confirm. \ No newline at end of file diff --git a/pages/nats/reference-content/index.mdx b/pages/nats/reference-content/index.mdx new file mode 100644 index 0000000000..dacce5bb31 --- /dev/null +++ b/pages/nats/reference-content/index.mdx @@ -0,0 +1,8 @@ +--- +meta: + title: NATS - Additional content + description: NATS additional content +content: + h1: NATS - Additional content + paragraph: NATS additional content +--- diff --git a/pages/nats/reference-content/limitations.mdx b/pages/nats/reference-content/limitations.mdx new file mode 100644 index 0000000000..0ce68a8d6d --- /dev/null +++ b/pages/nats/reference-content/limitations.mdx @@ -0,0 +1,22 @@ +--- +meta: + title: NATS Limitations + description: Learn about the current limitations of Scaleway NATS +content: + h1: NATS Limitations + paragraph: Learn about the current limitations of Scaleway NATS +tags: messaging limitations space size storage payload max-streams max-consumers max-subscribers max-topics visibility-timeout +dates: + validation: 2025-04-01 + posted: 2025-04-01 +categories: + - serverless +--- + +## Usage limits + +For the usage limits that apply when using Scaleway NATS, see the dedicated sections on our [Organization quotas](/organizations-and-projects/additional-content/organization-quotas/) page. Limits (quotas) apply to, for example, the maximum number of queues, streams, topics and consumers/subscribers, as well as to message retention duration and storage. + +## VPC + +NATS is not currently compatible with [Scaleway VPC](/vpc/quickstart/). diff --git a/pages/nats/reference-content/nats-overview.mdx b/pages/nats/reference-content/nats-overview.mdx new file mode 100644 index 0000000000..c3de3c6bf4 --- /dev/null +++ b/pages/nats/reference-content/nats-overview.mdx @@ -0,0 +1,81 @@ +--- +meta: + title: NATS Overview + description: Learn about the NATS messaging system +content: + h1: NATS Overview + paragraph: Learn about the NATS messaging system +tags: nats overview neural-autonomic-transport-system publish-subscribe jetstream streaming messaging deno +categories: + - serverless +dates: + validation: 2024-10-18 + posted: 2023-01-04 +--- + +## What is NATS? + +NATS (**N**eural **A**utonomic **T**ransport **S**ystem) is a messaging system that aims to be simple to use, scalable and provide high performance. It implements a [publish/subscribe](/nats/concepts/#publishsubscribe) model as well as adding a [streaming](/nats/concepts/#stream) service via [JetStream](https://docs.nats.io/nats-concepts/jetstream). A stream is a persistent, time-ordered list of messages which can be read sequentially by consumers. A consumer can be thought of as a "cursor" in the stream, consuming the stream's messages according to their "subject filter" or "replay policy". With NATS, you would typically implement a queue as a stream with a single consumer to read from. + +NATS is a [Cloud Native Computing Foundation](https://www.cncf.io/) project supported by a strong community, and can also be integrated in a Kubernetes cluster. + +## Scaleway NATS + +Scaleway NATS is a managed messaging service that enable seamless communication between distributed applications, which leverages the NATS protocol. + +## NATS accounts + +You can easily create a NATS account from the [Scaleway console](https://console.scaleway.com/), via the [Scaleway API](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/) or via [Terraform/OpenTofu](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider). + +## NATS credentials + +When you create your NATS account, you next need to [create credentials](/nats/how-to/create-credentials/). On the NATS side, these credentials are the equivalent of a 'user'. We use the most secure connection type offered by NATS: [NKeys](https://docs.nats.io/running-a-nats-service/configuration/securing_nats/auth_intro/nkey_auth). NKeys are a public-key signature system based on [Ed25519](https://ed25519.cr.yp.to/). + +Your credentials are provided in the form of a downloadable `.creds` file. Each set of credentials gives you full access to your NATS account, but does not enable you to generate new users with specific rights or fine-grained permissions. + +## Further actions: NATS CLI & NATS SDK + +All further actions related to publishing, processing and managing messages, subjects and streams can be done via one of the tools described below. + +Note that the Scaleway NATS server is configured with TLS, and as such will require all clients to connect with TLS. In the case of the NATS SDK however, the SDK abstracts this and handles the TLS connection itself. + +### NATS CLI + +The [NATS CLI](https://docs.nats.io/using-nats/nats-tools/nats_cli) is a great tool for administrating or testing your subjects and streams. See our [dedicated documentation](/nats/api-cli/nats-cli/) for help getting started with the NATS CLI. + +### NATS SDK + +NATS has a wide range of language compatibility: + +| Language | Links | +|:----------:|:----------------------------:| +| Golang | [nats.go](https://github.com/nats-io/nats.go), [godoc](http://godoc.org/github.com/nats-io/nats.go) | +| Java | [nats.java](https://github.com/nats-io/nats.java), [javadoc](https://javadoc.io/doc/io.nats/jnats), [examples](https://github.com/nats-io/java-nats-examples) | +| C# | [nats.net](https://github.com/nats-io/nats.net), [doxygen](http://nats-io.github.io/nats.net/), [package](https://www.nuget.org/packages/NATS.Client/0.14.1) | +| JavaScript | [Node.js](https://github.com/nats-io/nats.js/#readme), [deno](https://github.com/nats-io/nats.deno/blob/main/README.md), [WebSocket](https://github.com/nats-io/nats.ws/#readme) | +| Python | [nats.py](https://github.com/nats-io/nats.py), [doc](https://nats-io.github.io/nats.py/) | +| Ruby | [nats-pure.rb](https://github.com/nats-io/nats-pure.rb), [yard](https://www.rubydoc.info/gems/nats) | +| C | [nats.c](https://github.com/nats-io/nats.c), [doc](http://nats-io.github.io/nats.c) | +| Rust | [nats.rs](https://github.com/nats-io/nats.rs), [doc](https://docs.rs/nats) | +| Elixir | [nats.ex](https://github.com/nats-io/nats.ex), [doc](https://hex.pm/packages/gnat) | +| Zig | [nats.zig](https://github.com/nats-io/nats.zig) | +| PHP | [phpnats](https://github.com/repejota/phpnats) [nats.php](https://github.com/basis-company/nats.php) | + +Further community NATS SDKs, e.g. SwiftyNats, Kotlin and Crystal, can be found [here](https://docs.nats.io/using-nats/developer). + +The following documents may help you get started using the above SDKs: +- [Authentication with SDK](https://docs.nats.io/using-nats/developer/connecting/creds) +- [JavaScript: Using Jetstream](https://github.com/nats-io/nats.deno/blob/main/jetstream.md/#jetstream-client) +- [Python: Using Jetstream](https://github.com/nats-io/nats.py#jetstream) +- [Go: Using Jetstream](https://github.com/nats-io/nats.go#jetstream-basic-usage) + +The main difference you will find between the standard NATS documentation and Scaleway NATS is that we require you to provide a specific NATS URL and credentials to access the service. Refer to our [developers documentation](https://www.scaleway.com/en/developers/api/messaging-and-queuing/nats-api/) for further information. + +## NATS resources + +- [Official NATS Documentation: What is NATS?](https://docs.nats.io/nats-concepts/what-is-nats) +- [Create a serverless architecture for handling large messages using Scaleway's NATS, Serverless Functions, and Object Storage](/tutorials/large-messages/) +- [Publish/Subscribe in pure NATS (no message retention)](https://docs.nats.io/nats-concepts/core-nats/pubsub/pubsub_walkthrough) +- [Introduction to JetStream](https://docs.nats.io/nats-concepts/jetstream) +- [Learn NATS by Example](https://natsbyexample.com/) +- [How to use Scaleway NATS with the Terraform/OpenTofu NATS Jetstream provider](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/guides/mnq_with_nats_terraform_provider) \ No newline at end of file From d0ab04f544056bf591c99a5d8b8d832bfa134af1 Mon Sep 17 00:00:00 2001 From: Rowena Date: Tue, 1 Apr 2025 18:20:25 +0200 Subject: [PATCH 2/9] fix(menu): fix --- menu/navigation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/navigation.json b/menu/navigation.json index 2424fe35f6..808426702f 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4147,7 +4147,7 @@ "items": [ { "label": "Overview", - "slug": "../messaging" + "slug": "../nats" }, { "label": "Concepts", From a9a9045224c6141c4139286c3c53942093d25e49 Mon Sep 17 00:00:00 2001 From: Rowena Date: Wed, 2 Apr 2025 10:34:43 +0200 Subject: [PATCH 3/9] fix(nats): cleanup --- menu/navigation.json | 2 +- pages/nats/api-cli/nats-cli.mdx | 2 +- pages/nats/concepts.mdx | 6 +++--- pages/nats/how-to/create-account.mdx | 2 +- pages/nats/how-to/create-credentials.mdx | 1 + pages/nats/how-to/delete-account.mdx | 4 ++-- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/menu/navigation.json b/menu/navigation.json index 808426702f..4b6ba6c816 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4181,7 +4181,7 @@ }, { "label": "Delete a NATS account", - "slug": "delete-nats-account" + "slug": "delete-account" } ], "label": "How to", diff --git a/pages/nats/api-cli/nats-cli.mdx b/pages/nats/api-cli/nats-cli.mdx index f0730a55bc..da1dc25ba3 100644 --- a/pages/nats/api-cli/nats-cli.mdx +++ b/pages/nats/api-cli/nats-cli.mdx @@ -27,7 +27,7 @@ This page shows you how to get started with some basic actions via the NATS CLI. - A Scaleway account logged into the [console](https://console.scaleway.com) - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- A Scaleway [NATS account](/nats/how-to/create-nats-account) +- A Scaleway [NATS account](/nats/how-to/create-account) - NATS [credentials](/nats/how-to/create-credentials/) downloaded to your machine ## Installing the NATS CLI diff --git a/pages/nats/concepts.mdx b/pages/nats/concepts.mdx index c703c92dfe..b6ed44ad1c 100644 --- a/pages/nats/concepts.mdx +++ b/pages/nats/concepts.mdx @@ -19,7 +19,7 @@ The NATS [publish/subscribe model](#publish-subscribe) can be implemented as a c ## Credentials -Credentials give services and platforms access to Scaleway NATS, enabling them to connect to the host system. NATS credentials give full read-write-manage access to your NATS message broker. See the documetnation on [how to create credentials](TODO) for full details. +Credentials give services and platforms access to Scaleway NATS, enabling them to connect to the host system. NATS credentials give full read-write-manage access to your NATS message broker. See the documentation on [how to create credentials](/nats/how-to/create-credentials/) for full details. ## Message broker @@ -27,7 +27,7 @@ A message broker is a piece of software that allows applications, systems and se ## Messaging and Queuing -Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#nats), [Queues](#queues), and [Topics and Events](#topics-and-events). +Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#scaleway-nats), [Queues](/queues/), and [Topics and Events](/topics-and-events/). ## NATS account @@ -51,7 +51,7 @@ Subscribers can select which messages to receive using[topic-based](#topic-based NATS is available in multiple regions. A region designates the geographical area where the service is hosted. Refer to the [product availability table](/account/reference-content/products-availability/) to check which regions are available for NATS. -When [creating a NATS account](/nats/how-to/create-nats-account), you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. +When [creating a NATS account](/nats/how-to/create-account), you need to do this on a region-by-region basis. The region drop-down in the console allows you to switch between available regions. ## Scaleway NATS diff --git a/pages/nats/how-to/create-account.mdx b/pages/nats/how-to/create-account.mdx index eeee0cbf69..3caa49a886 100644 --- a/pages/nats/how-to/create-account.mdx +++ b/pages/nats/how-to/create-account.mdx @@ -33,7 +33,7 @@ To start using a NATS message broker, you must first create a NATS account. This - Choose a **region**, which is the geographical location in which your NATS account will be created. - Enter a **name** for your NATS account, or use the auto-generated name suggested for you. - - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/messaging/faq/#how-are-nats-queues-and-topics-and-events-billed). + - Optional: Use the *Estimated cost** calculator to simulate how messages sent and stored with NATS streams will be billed. Note that simply creating a NATS account does not in itself incur any billing. For more information about NATS billing, see the [FAQ](/nats/faq/#how-is-nats-billed). - Click **Create NATS account** to finish. You are directed to the listing of your NATS accounts, where your newly-created NATS account now appears. diff --git a/pages/nats/how-to/create-credentials.mdx b/pages/nats/how-to/create-credentials.mdx index 11a99bbeb1..f58c1c34c5 100644 --- a/pages/nats/how-to/create-credentials.mdx +++ b/pages/nats/how-to/create-credentials.mdx @@ -21,6 +21,7 @@ You can create multiple sets of credentials for each of your NATS accounts. - A Scaleway account logged into the [console](https://console.scaleway.com) - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization +- A [NATS account](/nats/how-to/create-account/) ## How to create credentials for a NATS account diff --git a/pages/nats/how-to/delete-account.mdx b/pages/nats/how-to/delete-account.mdx index 33ab0b5a94..475f145476 100644 --- a/pages/nats/how-to/delete-account.mdx +++ b/pages/nats/how-to/delete-account.mdx @@ -20,13 +20,13 @@ This page shows how to delete a Scaleway **NATS**, account. - A Scaleway account logged into the [console](https://console.scaleway.com) - [Owner](/iam/concepts/#owner) status or [IAM permissions](/iam/concepts/#permission) allowing you to perform actions in the intended Organization -- At least one [NATS account](/messaging/how-to/get-started/), [queue](/messaging/how-to/create-manage-queues/), or [topic](/messaging/how-to/create-manage-topics/) +- At least one [NATS account](/nats/how-to/create-account/) ## How to delete a NATS account 1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. -2. Use the drop-down menu to select the [region](/messaging/concepts/#region) containing the NATS account you want to delete. +2. Use the drop-down menu to select the [region](/nats/concepts/#region) containing the NATS account you want to delete. 3. Click the NATS account you want to delete. From 86ca65763d4844184302f48db54b6e2dc678d180 Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Wed, 2 Apr 2025 14:21:12 +0200 Subject: [PATCH 4/9] Update pages/nats/how-to/monitor-nats-cockpit.mdx --- pages/nats/how-to/monitor-nats-cockpit.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/nats/how-to/monitor-nats-cockpit.mdx b/pages/nats/how-to/monitor-nats-cockpit.mdx index 85f7191662..4863eea6e1 100644 --- a/pages/nats/how-to/monitor-nats-cockpit.mdx +++ b/pages/nats/how-to/monitor-nats-cockpit.mdx @@ -34,7 +34,7 @@ To view your metrics with Cockpit, you will use a Grafana dashboard which is acc 1. Click **NATS** in the **Serverless** section of the Scaleway console side menu. -2. Click the **protocol** you want to view metrics for, and navigate to the **Metrics** tab. +2. Click the **Metrics** tab. 3. Click **Open Grafana metrics dashboard**. From bd3664837fbb1f55b7aedbe342af666a9f0b9460 Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Wed, 2 Apr 2025 14:21:49 +0200 Subject: [PATCH 5/9] Update pages/nats/how-to/monitor-nats-cockpit.mdx --- pages/nats/how-to/monitor-nats-cockpit.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/nats/how-to/monitor-nats-cockpit.mdx b/pages/nats/how-to/monitor-nats-cockpit.mdx index 4863eea6e1..8b71c000c2 100644 --- a/pages/nats/how-to/monitor-nats-cockpit.mdx +++ b/pages/nats/how-to/monitor-nats-cockpit.mdx @@ -40,6 +40,6 @@ To view your metrics with Cockpit, you will use a Grafana dashboard which is acc 4. Enter your Grafana username and password to log in. - You are directed to the dashboard for the product in question, where you can view all your metrics. + You are directed to the NATS dashboard, where you can view all your metrics. From fe9a7b962b9426ca579bcbdf9c8d868eaa08ec89 Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Thu, 3 Apr 2025 10:19:02 +0200 Subject: [PATCH 6/9] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Néda <87707325+nerda-codes@users.noreply.github.com> --- pages/nats/api-cli/nats-cli.mdx | 2 +- pages/nats/how-to/create-credentials.mdx | 2 +- pages/nats/how-to/manage-credentials.mdx | 2 +- pages/nats/quickstart.mdx | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pages/nats/api-cli/nats-cli.mdx b/pages/nats/api-cli/nats-cli.mdx index da1dc25ba3..991d04da89 100644 --- a/pages/nats/api-cli/nats-cli.mdx +++ b/pages/nats/api-cli/nats-cli.mdx @@ -36,7 +36,7 @@ Follow instructions from the [official NATS documentation](https://docs.nats.io/ ## Define a context -To simplify your interactions with NATS hosted on Scaleway, we recommend that you use [contexts](https://docs.nats.io/using-nats/nats-tools/nats_cli#nats-contexts). A context is a named configuration that stores the settings (such as credentials, URLs and certificates) required to connect to NATS. By creating a context, you won't need to specify your server and credentials with each new request. +To simplify your interactions with NATS hosted on Scaleway, we recommend that you use [contexts](https://docs.nats.io/using-nats/nats-tools/nats_cli#nats-contexts). A context is a named configuration that stores the settings (such as credentials, URLs and certificates) required to connect to NATS. By creating a context, you will not need to specify your server and credentials with each new request. ### Create a context diff --git a/pages/nats/how-to/create-credentials.mdx b/pages/nats/how-to/create-credentials.mdx index f58c1c34c5..1de0418eb0 100644 --- a/pages/nats/how-to/create-credentials.mdx +++ b/pages/nats/how-to/create-credentials.mdx @@ -47,6 +47,6 @@ Credentials for NATS accounts are not granular: they necessarily give full read The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. -7. Click **Download** and save the file, before closing the window. +6. Click **Download** and save the file, before closing the window. You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. \ No newline at end of file diff --git a/pages/nats/how-to/manage-credentials.mdx b/pages/nats/how-to/manage-credentials.mdx index 301def91d5..9a6c396710 100644 --- a/pages/nats/how-to/manage-credentials.mdx +++ b/pages/nats/how-to/manage-credentials.mdx @@ -35,7 +35,7 @@ Note that the only management action available for NATS credentials is revocatio A pop-up displays, warning you that this action is irreversible and the key will no longer be able to access your service. -5. Click **Revoke credentials**. +4. Click **Revoke credentials**. The credentials are revoked and you are returned to the NATS account's **Overview** page. diff --git a/pages/nats/quickstart.mdx b/pages/nats/quickstart.mdx index 6c366cfa94..eae0e678de 100644 --- a/pages/nats/quickstart.mdx +++ b/pages/nats/quickstart.mdx @@ -57,7 +57,7 @@ Credentials for NATS accounts are not granular: they necessarily give full read 4. In the **Credentials** panel, click **Generate credentials**. A pop-up displays. -6. Enter a name for these credentials, and click **Generate credentials**. +5. Enter a name for these credentials, and click **Generate credentials**. The credentials are created and a button displays prompting you to download them in a `.creds` file. @@ -67,7 +67,7 @@ Credentials for NATS accounts are not granular: they necessarily give full read The generated credentials are displayed only once. Make sure to download and safely store them before closing the window. -7. Click **Download** and save the file, before closing the window. +6. Click **Download** and save the file, before closing the window. You are returned to your NATs account's overview page. The name of your newly-generated credentials and their access level is displayed in the **Credentials** panel. From 413bb85cefe76136ef6904e49fb04e39d63de6de Mon Sep 17 00:00:00 2001 From: Rowena Date: Thu, 3 Apr 2025 11:10:27 +0200 Subject: [PATCH 7/9] fix(nats): review comments --- pages/nats/concepts.mdx | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/pages/nats/concepts.mdx b/pages/nats/concepts.mdx index b6ed44ad1c..47327abdc9 100644 --- a/pages/nats/concepts.mdx +++ b/pages/nats/concepts.mdx @@ -13,10 +13,6 @@ dates: posted: 2025-04-01 --- -## Content-based - -The NATS [publish/subscribe model](#publish-subscribe) can be implemented as a content-based or topic-based system. In a content-based messaging system, the subscriber specifies the properties of the messages they want to receive, based on the message’s attributes or content. Message delivery is therefore selective, and messages are only delivered to a subscriber if the attributes or content match the constraints they set. - ## Credentials Credentials give services and platforms access to Scaleway NATS, enabling them to connect to the host system. NATS credentials give full read-write-manage access to your NATS message broker. See the documentation on [how to create credentials](/nats/how-to/create-credentials/) for full details. @@ -45,7 +41,7 @@ It implements both of the following: This is the primary messaging model for NATS, sometimes abbreviated to "pub/sub". The key feature of publish/subscribe is that the publisher does not send messages to defined recipients. Instead, subscribers define the types of message they are interested in, and only receive messages matching their criteria. The publisher sends the message without knowing exactly who will receive it. -Subscribers can select which messages to receive using[topic-based](#topic-based) or [content-based](#content-based). The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. +The publish/subscribe model relies on a [message broker](#message-broker) to relay messages between publishers and subscribers. With NATS, subscribers can select which messages to receive based on **subject**. ## Region @@ -71,8 +67,4 @@ Stream volume is one of the factors affecting the billing of Scaleway NATS. Stre ## Stream persistence -Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. - -## Topic-based - -The NATS [publish/subscribe model](#publish-subscribe) can be implemented as a content-based or topic-based system. In a topic-based system, messages are published to “topics” or named logical channels. \ No newline at end of file +Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. \ No newline at end of file From 1e0e62dc4db071d64c774b13c70fe29a554efd4a Mon Sep 17 00:00:00 2001 From: Rowena Jones <36301604+RoRoJ@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:53:35 +0200 Subject: [PATCH 8/9] Apply suggestions from code review Co-authored-by: Benedikt Rollik --- menu/navigation.json | 4 ++-- pages/nats/api-cli/nats-cli.mdx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/menu/navigation.json b/menu/navigation.json index 4b6ba6c816..ff0ac4f441 100644 --- a/menu/navigation.json +++ b/menu/navigation.json @@ -4168,11 +4168,11 @@ "slug": "create-account" }, { - "label": "Create credentials", + "label": "Create NATS credentials", "slug": "create-credentials" }, { - "label": "Manage credentials", + "label": "Manage NATS credentials", "slug": "manage-credentials" }, { diff --git a/pages/nats/api-cli/nats-cli.mdx b/pages/nats/api-cli/nats-cli.mdx index 991d04da89..dd0eec375c 100644 --- a/pages/nats/api-cli/nats-cli.mdx +++ b/pages/nats/api-cli/nats-cli.mdx @@ -32,7 +32,7 @@ This page shows you how to get started with some basic actions via the NATS CLI. ## Installing the NATS CLI -Follow instructions from the [official NATS documentation](https://docs.nats.io/using-nats/nats-tools/nats_cli#installing-nats). The installation process may differ depending on your OS. +Follow instructions from the [official NATS documentation](https://docs.nats.io/using-nats/nats-tools/nats_cli#installing-nats). The installation process may differ depending on your operating system. ## Define a context From f9d5ca51525e03086bddb4b901df5db4a4084e75 Mon Sep 17 00:00:00 2001 From: Rowena Date: Mon, 7 Apr 2025 15:39:49 +0200 Subject: [PATCH 9/9] fix(nats): correct pricing --- pages/nats/concepts.mdx | 18 +++++++++--------- pages/nats/faq.mdx | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pages/nats/concepts.mdx b/pages/nats/concepts.mdx index 47327abdc9..53d7110a2e 100644 --- a/pages/nats/concepts.mdx +++ b/pages/nats/concepts.mdx @@ -21,6 +21,14 @@ Credentials give services and platforms access to Scaleway NATS, enabling them t A message broker is a piece of software that allows applications, systems and services to communicate with each other and send/receive data. It facilitates the exchange of information by receiving messages from a producer, and transmitting them to a consumer. Scaleway NATS is a message broker tool based on the NATS messaging system. +## Message volume + +Message volume is one of the factors affecting the billing of Scaleway NATS. Message volume is calculated as the number of messages sent to/received by NATS, multiplied by the message size. Or, the sum of the size of all messages passing through NATS. + +## Message persistence + +Message persistence is one of the factors affecting the billing of Scaleway NATS. Message persistence is calculated as the total amount stored in NATS, multiplied by the duration it is stored for. + ## Messaging and Queuing Previously, Scaleway Messaging and Queuing was a single product that grouped together three different messaging protocols. It has now been split into three distinct products: [NATS](#scaleway-nats), [Queues](/queues/), and [Topics and Events](/topics-and-events/). @@ -59,12 +67,4 @@ Check our our [NATS quickstart](/nats/quickstart/) to get started with Scaleway NATS includes the JetStream feature, an add-on to its pub/sub model which implements message streams with persistent messaging capabilities. Distinct from traditional message brokers where messages are deleted once received/consumed, streams retain records ("persistence") of their events. A streaming broker is therefore often likened to a distributed append-only logs file, where every new message is added at the end of the persistent log. Consumers can be thought of as “cursors” in the stream, consuming the stream’s messages according to their filters. -With NATS, you would typically implement a queue as a stream with a single consumer to read from. - -## Stream volume - -Stream volume is one of the factors affecting the billing of Scaleway NATS. Stream volume is calculated as the number of messages in a stream, multiplied by the message size. Or, the sum of the size of all messages in a stream. - -## Stream persistence - -Stream persistence is one of the factors affecting the billing of Scaleway NATS. Stream persistence is calculated as the total amount stored in a stream, multiplied by the duration it is stored for. \ No newline at end of file +With NATS, you would typically implement a queue as a stream with a single consumer to read from. \ No newline at end of file diff --git a/pages/nats/faq.mdx b/pages/nats/faq.mdx index 1cddafe73d..f1bc0cf8ea 100644 --- a/pages/nats/faq.mdx +++ b/pages/nats/faq.mdx @@ -26,6 +26,6 @@ The **N**eural **A**utonomic **T**ransport **S**ystem, or [NATS](https://nats.io ## How is Scaleway NATS billed? -Billing is based on [stream volume](/nats/concepts/#stream-volume) (the total sum of each message's size going through the stream) and [stream persistence](/nats/concepts/#stream-persistence) (the total amount of data stored * duration). +Billing is based on [message volume](/nats/concepts/#message-volume) (the total sum of each message's size going through NATS) and [message persistence](/nats/concepts/#message-persistence) (the total amount of data stored * duration). For full pricing details, see our [dedicated pricing page](https://www.scaleway.com/en/pricing/). \ No newline at end of file