نتس net/nats
کلاینت NATS با سرآیند، درخواست و پاسخ، و جریانها، مصرفکنندهها و تاییدیههای جتاستریم.
واردسازی net.nats
NATS یک گذرگاه پیام کوچک و سریع است. این بسته کلاینتی برای آن است که با خود سلام نوشته شده و به کتابخانهی بومی نیاز ندارد. برقراری اتصال از یک نشانی مثل nats://127.0.0.1:4222 یک اتصال نتس باز میکند و برقراری اتصال با گزینه یک مقدار گزینه ها هم میگیرد (با گزینه های پیشفرض شروع کنید) و شما روی یک موضوع منتشر میکنید، مشترک آن میشوید یا درخواستی میفرستید و پاسخ را میگیرید. موضوعها نامهای نقطهدار مثل orders.created هستند و موضوع معتبر پیش از استفاده میگوید نام پذیرفتنی است یا نه.
سرآیندها
سرآیند کنار بار پیام جفتهای کلید و مقدار را میبرد. سرآیند تازه یکی میسازد، افزودن سرآیند مقدار میافزاید، تنظیم سرآیند مقدارهای یک کلید را جایگزین میکند، گرفتن سرآیند و مقدارهای سرآیند آنها را میخوانند و رمزگذاری سرآیند و تجزیه سرآیند سرآیند را به شکل سیمی و برعکس تبدیل میکنند.
واردسازی شبکه.نتس
تابع ریشه:
ناپایا h := نتس.سرآیند تازه()
نتس.افزودن سرآیند(h، "Trace"، "a1")
نتس.افزودن سرآیند(h، "Trace"، "b2")
نتس.تنظیم سرآیند(h، "Tenant"، "acme")
سرچاپ نتس.گرفتن سرآیند(h، "Tenant")، نتس.شمار سرآیند(h)، نتس.سرآیند دارد(h، "Trace")
سرچاپ نتس.موضوع معتبر("orders.created")، نتس.موضوع معتبر("bad subject")
پایانجتاستریم
جتاستریم پیامها را نگه میدارد. افزودن جریان جریانی روی چند موضوع میسازد، انتشار جتاستریم منتشر میکند و پس از ذخیرهی پیام یک تاییدیه انتشار میدهد، و افزودن مصرفکننده با واکشی پیامها را دستهدسته میخواند. پس از پردازش تایید را صدا بزنید؛ رد تحویل دوباره میخواهد، ادامه کار مهلت را تمدید میکند و خاتمه از پیام صرفنظر میکند. اطلاعات جریان، پاکسازی جریان و حذف جریان بررسی و پاکسازی میکنند.
موضوعها و جایگزینها
در اشتراک میتوان از دو جایگزین استفاده کرد: * دقیقاً یک واژه است و > یک یا چند واژه در انتهای موضوع. پس orders.* با orders.created جور است ولی با orders.created.eu نه، و orders.> با هر دو جور است ولی با خود orders نه. تطبیق موضوع همین قاعده را محلی اجرا میکند و در آزمونها به کار میآید. موضوع معتبر نام خالی، فاصله و نویسههای کنترلی، نقطه ابتدا یا انتها و واژه خالی میان دو نقطه را رد میکند. هیچکدام کارگزار نمیخواهند.
واردسازی شبکه.نتس
تابع show(pattern: رشته، subject: رشته):
سرچاپ pattern، subject، نتس.تطبیق موضوع(pattern، subject)
پایان
تابع ریشه:
show("orders.*"، "orders.created")
show("orders.*"، "orders.created.eu")
show("orders.>"، "orders.created.eu")
show("orders.>"، "orders")
show("*.created"، "orders.created")
show("orders.created"، "orders.created")
سرچاپ نتس.موضوع معتبر("orders..created")، نتس.موضوع معتبر(".orders")، نتس.موضوع معتبر("orders.")
سرچاپ نتس.موضوع معتبر("")، نتس.موضوع معتبر("a b")، نتس.موضوع معتبر("orders.>")
پایاندرخواست و پاسخ
درخواست پیامی با یک موضوع پاسخ خصوصی میفرستد و منتظر یک جواب میماند. نتیجه یک پیام است، پس پیش از خواندن داده مقدار سالم را ببینید. اگر هیچکس روی موضوع مشترک نباشد، کارگزار همین را خبر میدهد و خطا برابر no responders است؛ اگر کسی مشترک باشد ولی به موقع جواب ندهد، timeout است. اشتراک پاسخگو تابعی میگیرد که از پیام به متن پاسخ میرسد. چیزی در پسزمینه اجرا نمیشود: دستگیرهها وقتی اجرا میشوند که اتصال پردازش شود و درخواست، پیام بعدی، تخلیه و پردازش همه این کار را میکنند. برای پاسخ دستی با اشتراک مشترک شوید و پاسخ را با پیام دریافتی صدا بزنید.
واردسازی شبکه.نتس
تابع ریشه:
ناپایا nc := نتس.برقراری اتصال("nats://127.0.0.1:4222")
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
_s := نتس.اشتراک پاسخگو(nc، "svc.shout"، ""، (m: نتس.پیام): برگشت m.داده + "!" پایان)
r := نتس.درخواست(nc، "svc.shout"، "hello"، 1000)
اگر r.سالم:
سرچاپ "reply:"، r.داده
وگرنه:
سرچاپ "failed:"، r.خطا
پایان
gone := نتس.درخواست(nc، "svc.nobody"، "x"، 1000)
سرچاپ gone.سالم، gone.خطا
slow := نتس.درخواست(nc، "svc.silent"، "x"، 150)
سرچاپ slow.سالم، slow.خطا
نتس.بستن(nc)
برگشت 0
پایانگروه صف و خروج تمیز
اشتراکهایی که نام صف یکسان دارند یک گروهاند و کارگزار هر پیام را فقط به یکی از آنها میدهد؛ همینطور چند کارگر کارها را بین خود تقسیم میکنند. اینکه کدام عضو کدام پیام را بگیرد با کارگزار است، پس شمار پیامهای پردازششده را بشمارید، نه اینکه چه کسی پردازش کرده. پیام بعدی تا مهلت دادهشده به میلیثانیه صبر میکند و اگر چیزی نرسد پیامی با سالم نادرست و خطا برابر timeout برمیگرداند. لغو خودکار اشتراک اشتراک را پس از آن تعداد تحویل برمیدارد. تخلیه کامل اشتراکها را متوقف میکند، آنچه مانده را میفرستد و اتصال را میبندد، پس آخرین فراخوانی درست همین است.
واردسازی شبکه.نتس
تابع ریشه:
ناپایا nc := نتس.برقراری اتصال("nats://127.0.0.1:4222")
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
a := نتس.اشتراک صف(nc، "jobs"، "workers")
b := نتس.اشتراک صف(nc، "jobs"، "workers")
_ok := نتس.لغو خودکار اشتراک(nc، a، 10)
تکرار 6 در i:
_sent := نتس.انتشار(nc، "jobs"، "job " + i)
پایان
_flushed := نتس.تخلیه(nc، 1000)
ناپایا handled := 0
تکرار 2 در k:
s := k == 0 ? a : b
ناپایا m := نتس.پیام بعدی(nc، s، 200)
تا m.سالم:
handled += 1
m = نتس.پیام بعدی(nc، s، 200)
پایان
پایان
سرچاپ "handled"، handled، "subscriptions"، نتس.شمار اشتراک(nc)
سرچاپ "drained"، نتس.تخلیه کامل(nc، 1000)
برگشت 0
پایانگونهها
نتیجه جتاستریم JSResult
ساختار نتیجه جتاستریم| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| سالم | ok | منطقی = نادرست | کارگزار درخواست را پذیرفت. |
| خطا | err | رشته = "" | متن خطا که در صورت موفقیت خالی است. |
| کد | code | صحیح = 0 | کد خطای جتاستریم که اگر خطایی نباشد ۰ است. |
| خام | raw | رشته = "" | پاسخ جیسون همانطور که کارگزار فرستاده است. |
// زبان: فارسی
واردسازی شبکه.نتس
تابع ریشه(): صحیح:
ناپایا nc := نتس.برقراری اتصال("nats://127.0.0.1:4222")
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
ناپایا subjects := وکتور {} برگردان وکتور<رشته>
دیرکن subjects.آزادکن()
subjects.بیفزا("orders.*")
made := نتس.افزودن جریان(nc، "ORDERS"، subjects، 2000)
سرچاپ "stream:"، made.سالم، made.خطا
ack := نتس.انتشار جتاستریم(nc، "orders.new"، "order 1"، 2000)
سرچاپ "stored at"، ack.جریان، ack.شماره
ناپایا h := نتس.سرآیند تازه()
نتس.افزودن سرآیند(h، "Nats-Msg-Id"، "order-2")
again := نتس.انتشار جتاستریم با سرآیند(nc، "orders.new"، h، "order 2"، 2000)
سرچاپ again.سالم، again.تکراری
info := نتس.اطلاعات جریان(nc، "ORDERS"، 2000)
سرچاپ info.پیام ها، info.نخستین شماره، info.واپسین شماره، info.مصرفکننده ها
raw := نتس.درخواست جتاستریم(nc، "STREAM.NAMES"، ""، 2000)
سرچاپ raw.سالم
نتس.افزودن مصرفکننده(nc، "ORDERS"، "worker"، "orders.*"، 2000)
batch := نتس.واکشی(nc، "ORDERS"، "worker"، 10، 1000)
هر m در batch.پیام ها:
سرچاپ m.داده، "number"، نتس.شماره پیام جریان(m)
اگر m.داده برابر "order 1":
نتس.تایید(nc، m)
وگرنه m.داده برابر "order 2":
نتس.رد(nc، m)
وگرنه:
نتس.خاتمه(nc، m)
پایان
پایان
اگر batch.پیام ها.طول() بزرگتر 0:
نتس.ادامه کار(nc، batch.پیام ها.بگیر(0))
پایان
نتس.حذف مصرفکننده(nc، "ORDERS"، "worker"، 2000)
نتس.پاکسازی جریان(nc، "ORDERS"، 2000)
نتس.حذف جریان(nc، "ORDERS"، 2000)
نتس.بستن(nc)
برگشت 0
پایانوضعیت جریان StreamState
ساختار وضعیت جریاناطلاعات جریان برمیگرداند.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| سالم | ok | منطقی = نادرست | جریان پیدا و خوانده شد. |
| خطا | err | رشته = "" | متن خطا که در صورت موفقیت خالی است. |
| نام | name | رشته = "" | نام جریان. |
| پیام ها | messages | صحیح = 0 | شمار پیامهایی که جریان نگه میدارد. |
| بایت ها | bytes | صحیح = 0 | شمار بایتهایی که جریان نگه میدارد. |
| نخستین شماره | first_seq | صحیح = 0 | شماره قدیمیترین پیام. |
| واپسین شماره | last_seq | صحیح = 0 | شماره تازهترین پیام. |
| مصرفکننده ها | consumers | صحیح = 0 | شمار مصرفکنندههای جریان. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
تاییدیه انتشار PubAck
ساختار تاییدیه انتشار| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| سالم | ok | منطقی = نادرست | جریان پیام را ذخیره کرد. |
| خطا | err | رشته = "" | متن خطا که در صورت موفقیت خالی است. |
| جریان | stream | رشته = "" | جریانی که پیام را ذخیره کرد. |
| شماره | seq | صحیح = 0 | شماره پیام در جریان. |
| تکراری | duplicate | منطقی = نادرست | این پیام از پیش در جریان بود. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
دسته Batch
ساختار دستهواکشی برگرداند.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| پیام ها | msgs | وکتور<پیام> | پیامها، که ممکن است کمتر از مقدار درخواستی باشند. |
| خطا | err | رشته = "" | متن خطا که در صورت موفقیت خالی است. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
ورودی کیوی KVEntry
ساختار ورودی کیوی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| سالم | ok | منطقی = نادرست | خود درخواست موفق بود، حتی اگر کلید وجود نداشته باشد. |
| یافت شد | found | منطقی = نادرست | کلید وجود دارد و مقدار مقدار آن را نگه میدارد. |
| حذف شده | deleted | منطقی = نادرست | آخرین عمل روی کلید آن را حذف کرده است. |
| کلید | key | رشته = "" | کلیدی که خوانده شد. |
| مقدار | value | رشته = "" | مقدار کلید. |
| ویرایش | revision | صحیح = 0 | شماره این ویرایش کلید در جریان. |
| خطا | err | رشته = "" | متن خطا، مانند key not found. |
// زبان: فارسی
واردسازی شبکه.نتس
تابع ریشه(): صحیح:
ناپایا nc := نتس.برقراری اتصال("nats://127.0.0.1:4222")
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
made := نتس.ساخت سطل کیوی(nc، "config"، 5، 2000)
سرچاپ "bucket:"، made.سالم
put := نتس.نوشتن کیوی(nc، "config"، "theme"، "dark"، 2000)
سرچاپ "revision"، put.شماره
got := نتس.خواندن کیوی(nc، "config"، "theme"، 2000)
اگر got.یافت شد:
سرچاپ got.کلید، got.مقدار، got.ویرایش
پایان
نتس.حذف کیوی(nc، "config"، "theme"، 2000)
gone := نتس.خواندن کیوی(nc، "config"، "theme"، 2000)
سرچاپ gone.یافت شد، gone.حذف شده
نتس.حذف سطل کیوی(nc، "config"، 2000)
نتس.بستن(nc)
برگشت 0
پایانسرآیند Header
ساختار سرآیند| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| کلیدها | keys | وکتور<رشته> | کلیدها به ترتیب افزوده شدن. |
| مقدارها | values | وکتور<رشته> | مقدارها به همان ترتیب کلیدها. |
// زبان: فارسی
واردسازی شبکه.نتس
واردسازی رشته
تابع ریشه:
ناپایا h := نتس.سرآیند تازه()
نتس.افزودن سرآیند(h، "Trace-Id"، "abc")
نتس.افزودن سرآیند(h، "Tag"، "one")
نتس.افزودن سرآیند(h، "Tag"، "two")
سرچاپ نتس.گرفتن سرآیند(h، "trace-id")، نتس.مقدارهای سرآیند(h، "TAG").طول()، نتس.سرآیند دارد(h، "nope")
نتس.تنظیم سرآیند(h، "Tag"، "only")
نتس.حذف سرآیند(h، "Trace-Id")
سرچاپ نتس.شمار سرآیند(h)
سرچاپ رشته.جایگزینی(نتس.رمزگذاری سرآیند(h)، "\r\n"، "|")
ناپایا code := 0
ناپایا text := ""
back := نتس.تجزیه سرآیند("NATS/1.0 503 No Responders\r\nA: 1\r\n\r\n"، code، text)
سرچاپ code، text، نتس.گرفتن سرآیند(back، "a")
پایانپیام Msg
ساختار پیام| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| سالم | ok | منطقی = نادرست | پیامی رسید؛ پس از پایان مهلت یا خطا نادرست است. |
| خطا | err | رشته = "" | متن خطا، مانند timeout. |
| موضوع | subject | رشته = "" | موضوع پیام. |
| پاسخ به | reply | رشته = "" | موضوعی که پاسخ باید به آن فرستاده شود و اگر پاسخی لازم نباشد خالی است. |
| داده | data | رشته = "" | بار پیام. |
| سرآیند | header | سرآیند | سرآیندهای پیام. |
| شناسه اشتراک | sid | صحیح = 0 | شناسه اشتراکی که آن را گرفت. |
| وضعیت | status | صحیح = 0 | کد وضعیت در پیام وضعیت، مانند ۵۰۳ برای نبودن پاسخدهنده، و در غیر این صورت ۰. |
| متن وضعیت | status_text | رشته = "" | متن کنار کد وضعیت. |
// زبان: فارسی
واردسازی شبکه.نتس
ناپایا seen := 0
تابع note(m: نتس.پیام):
seen += 1
سرچاپ "event"، m.موضوع، m.داده
پایان
تابع shout(m: نتس.پیام): رشته:
برگشت "HELLO " + m.داده
پایان
تابع ریشه(): صحیح:
ناپایا nc := نتس.برقراری اتصال("nats://127.0.0.1:4222")
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
نتس.اشتراک با دستگیره(nc، "events.>"، ""، (m: نتس.پیام): note(m) پایان)
نتس.اشتراک پاسخگو(nc، "greet"، ""، (m: نتس.پیام): برگشت shout(m) پایان)
نتس.انتشار(nc، "events.a.b"، "started")
ناپایا fwd := نتس.پیام {}
fwd.موضوع = "events.copy"
fwd.داده = "forwarded"
نتس.انتشار پیام(nc، fwd)
تکرار 20:
نتس.پردازش(nc، 100)
پایان
سرچاپ "handled"، seen
نتس.بستن(nc)
برگشت 0
پایاننشانگر اشتراک Subscription
ساختار نشانگر اشتراکاشتراک برمیگرداند.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| سالم | ok | منطقی = نادرست | اشتراک ساخته شد. |
| شناسه | sid | صحیح = 0 | شناسه اشتراک. |
| موضوع | subject | رشته = "" | موضوع یا الگویی که به آن گوش میدهد. |
| صف | queue | رشته = "" | گروه صف که اگر نباشد خالی است. |
// زبان: فارسی
واردسازی شبکه.نتس
تابع ریشه(): صحیح:
ناپایا nc := نتس.برقراری اتصال("nats://127.0.0.1:4222")
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
all := نتس.اشتراک(nc، "orders.*")
first := نتس.اشتراک صف(nc، "jobs"، "workers")
once := نتس.اشتراک(nc، "ping")
نتس.لغو خودکار اشتراک(nc، once، 1)
سرچاپ "subscriptions:"، نتس.شمار اشتراک(nc)
نتس.انتشار(nc، "orders.new"، "order 1")
نتس.انتشار(nc، "jobs"، "job 1")
نتس.انتشار(nc، "ping"، "hello")
نتس.تخلیه(nc، 1000)
سرچاپ "waiting:"، نتس.صف مانده(nc، all)، نتس.صف مانده(nc، first)
m := نتس.پیام بعدی(nc، all، 1000)
اگر m.سالم:
سرچاپ m.موضوع، m.داده
پایان
p := نتس.پیام بعدی(nc، once، 1000)
سرچاپ p.داده، نتس.تحویل شده(nc، once)، نتس.اشتراک فعال است(nc، once)
نتس.لغو اشتراک(nc، all)
نتس.بستن(nc)
برگشت 0
پایاناطلاعات کارگزار ServerInfo
ساختار اطلاعات کارگزار| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| شناسه کارگزار | server_id | رشته = "" | شناسه یکتای کارگزار. |
| نام کارگزار | server_name | رشته = "" | نام تنظیمشده کارگزار. |
| نگارش | version | رشته = "" | نگارش کارگزار. |
| میزبان | host | رشته = "" | میزبانی که کارگزار اعلام میکند. |
| درگاه | port | صحیح = 0 | درگاهی که کارگزار اعلام میکند. |
| پروتکل | proto | صحیح = 0 | نگارش پروتکل. |
| شناسه کارخواه | client_id | صحیح = 0 | شناسهای که کارگزار به این اتصال داد. |
| بیشینه اندازه بار | max_payload | صحیح = 1048576 | بزرگترین بار پذیرفتهشده کارگزار به بایت. |
| سرآیند پشتیبانی | headers | منطقی = نادرست | کارگزار از سرآیند پیام پشتیبانی میکند. |
| تیالاس لازم | tls_required | منطقی = نادرست | کارگزار تیالاس را الزامی میداند. |
| احراز هویت لازم | auth_required | منطقی = نادرست | کارگزار احراز هویت را الزامی میداند. |
| جتاستریم | jetstream | منطقی = نادرست | جتاستریم روی کارگزار فعال است. |
| خام | raw | رشته = "" | خط INFO همانطور که کارگزار فرستاده است. |
// زبان: فارسی
واردسازی شبکه.نتس
تابع ریشه(): صحیح:
ناپایا opts := نتس.گزینه های پیشفرض()
opts.نام = "billing"
opts.مهلت میلیثانیه = 3000
ناپایا nc := نتس.برقراری اتصال با گزینه("nats://127.0.0.1:4222"، opts)
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
سرچاپ "connected, largest payload"، نتس.بیشینه اندازه بار(nc)
نتس.بستن(nc)
سرچاپ نتس.بسته شده است(nc)
برگشت 0
پایانگزینه ها Options
ساختار گزینه هاگزینه های پیشفرض شروع کنید.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| نام | name | رشته = "" | نامی برای این کارخواه که در پایش کارگزار دیده میشود. |
| کاربر | user | رشته = "" | نام کاربر. |
| گذرواژه | password | رشته = "" | گذرواژه. |
| توکن | token | رشته = "" | توکن احراز هویت که به جای کاربر و گذرواژه به کار میرود. |
| بدون پژواک | no_echo | منطقی = نادرست | پیامهای خود این اتصال به آن برگردانده نشوند. |
| پرگو | verbose | منطقی = نادرست | از کارگزار میخواهد هر فرمان پروتکل را تایید کند. |
| سختگیر | pedantic | منطقی = نادرست | از کارگزار بررسی سختگیرانهتر پروتکل را میخواهد. |
| امن | secure | منطقی = نادرست | از تیالاس استفاده شود. |
| بدون راستی آزمایی | insecure_skip_verify | منطقی = نادرست | هر گواهی تیالاس را میپذیرد. فقط برای آزمایش به کار ببرید. |
| مهلت میلیثانیه | timeout_ms | صحیح = 5000 | مهلت برقراری اتصال به میلیثانیه. |
| فاصله پینگ میلیثانیه | ping_interval_ms | صحیح = 120000 | فاصله پینگ کردن کارگزار به میلیثانیه. |
| بیشینه پینگ بیپاسخ | max_pings_out | صحیح = 2 | چند پینگ بیپاسخ به معنای مرگ اتصال است. |
| پیشوند صندوق | inbox_prefix | رشته = "_INBOX" | پیشوند موضوع برای صندوق تازه. |
| کارگزارها | servers | وکتور<رشته> | نشانی کارگزارهای دیگر برای امتحان هنگام اتصال یا اتصال دوباره. |
| بیشینه اتصال دوباره | max_reconnects | صحیح = 0 | چند بار پس از قطع اتصال دوباره وصل شود؛ ۰ اتصال دوباره را خاموش میکند. |
| انتظار اتصال دوباره میلیثانیه | reconnect_wait_ms | صحیح = 2000 | فاصله تلاشهای اتصال دوباره به میلیثانیه. |
| بافر اتصال دوباره | reconnect_buffer | صحیح = 8388608 | چند بایت از پیامهای خروجی هنگام اتصال دوباره نگه داشته شود. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
آمار Stats
ساختار آمار| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| پیام ورودی | in_msgs | صحیح۶۴ = 0 | پیامهای دریافتشده. |
| پیام خروجی | out_msgs | صحیح۶۴ = 0 | پیامهای فرستادهشده. |
| بایت ورودی | in_bytes | صحیح۶۴ = 0 | بایتهای بار دریافتشده. |
| بایت خروجی | out_bytes | صحیح۶۴ = 0 | بایتهای بار فرستادهشده. |
اتصال نتس Conn
ساختار اتصال نتسپیام بعدی یا پردازش را صدا بزنید.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| سالم | ok | منطقی = نادرست | اتصال برقرار شد. |
| قطع شده | closed | منطقی = نادرست | اتصال بسته شده است. |
| تخلیه شدن | draining | منطقی = نادرست | تخلیه کامل در حال انجام است. |
| خطا | err | رشته = "" | متن آخرین خطا. |
| نشانی | url | رشته = "" | نشانی کارگزار فعلی. |
| اطلاعات | info | اطلاعات کارگزار | آنچه کارگزار درباره خودش گفت. |
| گزینه ها | opts | گزینه ها | تنظیمات این اتصال. |
| آمار | stats | آمار | شمارندههای ترافیک این اتصال. |
نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
تابعها
درخواست جتاستریم JSRequest
تابع درخواست جتاستریم(nc &: اتصال نتس، api: رشته، body: رشته، timeout_ms: صحیح): نتیجه جتاستریمSTREAM.INFO.orders، و پاسخ را برمیگرداند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
افزودن جریان AddStream
تابع افزودن جریان(nc &: اتصال نتس، name: رشته، subjects: وکتور<رشته>، timeout_ms: صحیح): نتیجه جتاستریمنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
حذف جریان DeleteStream
تابع حذف جریان(nc &: اتصال نتس، name: رشته، timeout_ms: صحیح): نتیجه جتاستریمنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
پاکسازی جریان PurgeStream
تابع پاکسازی جریان(nc &: اتصال نتس، name: رشته، timeout_ms: صحیح): نتیجه جتاستریمنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
اطلاعات جریان StreamInfo
تابع اطلاعات جریان(nc &: اتصال نتس، name: رشته، timeout_ms: صحیح): وضعیت جریاننمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
انتشار جتاستریم JSPublish
تابع انتشار جتاستریم(nc &: اتصال نتس، subject: رشته، data: رشته، timeout_ms: صحیح): تاییدیه انتشارنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
انتشار جتاستریم با سرآیند JSPublishHeaders
تابع انتشار جتاستریم با سرآیند(nc &: اتصال نتس، subject: رشته، h: سرآیند، data: رشته، timeout_ms: صحیح): تاییدیه انتشارانتشار جتاستریم، همراه با سرآیند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
افزودن مصرفکننده AddConsumer
تابع افزودن مصرفکننده(nc &: اتصال نتس، stream: رشته، durable: رشته، filter: رشته، timeout_ms: صحیح): نتیجه جتاستریمfilter آن را به یک موضوع محدود میکند و میتواند خالی باشد.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
حذف مصرفکننده DeleteConsumer
تابع حذف مصرفکننده(nc &: اتصال نتس، stream: رشته، durable: رشته، timeout_ms: صحیح): نتیجه جتاستریمنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
واکشی Fetch
تابع واکشی(nc &: اتصال نتس، stream: رشته، durable: رشته، batch: صحیح، timeout_ms: صحیح): دستهbatch پیام میخواهد و تا رسیدن آنها یا پایان مهلت صبر میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
تایید Ack
تابع تایید(nc &: اتصال نتس، m: پیام): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
رد Nak
تابع رد(nc &: اتصال نتس، m: پیام): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
خاتمه Term
تابع خاتمه(nc &: اتصال نتس، m: پیام): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
ادامه کار InProgress
تابع ادامه کار(nc &: اتصال نتس، m: پیام): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
شماره پیام جریان MsgSequence
تابع شماره پیام جریان(m: پیام): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-JetStream.salam
افزودن مصرفکننده فشاری AddPushConsumer
تابع افزودن مصرفکننده فشاری(nc &: اتصال نتس، stream: رشته، durable: رشته، filter: رشته، deliver: رشته، queue: رشته، timeout_ms: صحیح): نتیجه جتاستریمdeliver تحویل میدهد؛ برای گرفتن پیامها مشترک همان موضوع شوید.// زبان: فارسی
واردسازی شبکه.نتس
تابع ریشه(): صحیح:
ناپایا nc := نتس.برقراری اتصال("nats://127.0.0.1:4222")
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
sub := نتس.اشتراک(nc، "deliver.orders")
made := نتس.افزودن مصرفکننده فشاری(nc، "ORDERS"، "pusher"، "orders.*"، "deliver.orders"، ""، 2000)
اگر وارونه made.سالم:
سرچاپ "consumer:"، made.خطا
برگشت 1
پایان
تا درست:
m := نتس.پیام فشاری بعدی(nc، sub، 2000)
اگر وارونه m.سالم:
بشکن
پایان
سرچاپ m.داده، نتس.شماره پیام جریان(m)
نتس.تایید(nc، m)
پایان
نتس.بستن(nc)
برگشت 0
پایانپیام فشاری بعدی NextPush
تابع پیام فشاری بعدی(nc &: اتصال نتس، s: نشانگر اشتراک، timeout_ms: صحیح): پیامنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Push.salam
ساخت سطل کیوی KVCreate
تابع ساخت سطل کیوی(nc &: اتصال نتس، bucket: رشته، history: صحیح، timeout_ms: صحیح): نتیجه جتاستریمhistory ویرایش از هر کلید را نگه میدارد.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-KV.salam
حذف سطل کیوی KVDeleteBucket
تابع حذف سطل کیوی(nc &: اتصال نتس، bucket: رشته، timeout_ms: صحیح): نتیجه جتاستریمنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-KV.salam
نوشتن کیوی KVPut
تابع نوشتن کیوی(nc &: اتصال نتس، bucket: رشته، key: رشته، value: رشته، timeout_ms: صحیح): تاییدیه انتشارشماره آن ویرایش تازه است.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-KV.salam
خواندن کیوی KVGet
تابع خواندن کیوی(nc &: اتصال نتس، bucket: رشته، key: رشته، timeout_ms: صحیح): ورودی کیوینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-KV.salam
حذف کیوی KVDelete
تابع حذف کیوی(nc &: اتصال نتس، bucket: رشته، key: رشته، timeout_ms: صحیح): تاییدیه انتشارنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-KV.salam
گزینه های پیشفرض DefaultOptions
تابع گزینه های پیشفرض(): گزینه هانمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
سرآیند تازه NewHeader
تابع سرآیند تازه(): سرآیندنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
افزودن سرآیند HeaderAdd
تابع افزودن سرآیند(h &: سرآیند، key: رشته، value: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
حذف سرآیند HeaderDel
تابع حذف سرآیند(h &: سرآیند، key: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
تنظیم سرآیند HeaderSet
تابع تنظیم سرآیند(h &: سرآیند، key: رشته، value: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
گرفتن سرآیند HeaderGet
تابع گرفتن سرآیند(h: سرآیند، key: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
مقدارهای سرآیند HeaderValues
تابع مقدارهای سرآیند(h: سرآیند، key: رشته): وکتور<رشته>نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
سرآیند دارد HeaderHas
تابع سرآیند دارد(h: سرآیند، key: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
شمار سرآیند HeaderCount
تابع شمار سرآیند(h: سرآیند): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
رمزگذاری سرآیند HeaderEncode
تابع رمزگذاری سرآیند(h: سرآیند): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
تجزیه سرآیند HeaderParse
تابع تجزیه سرآیند(block: رشته، status &: صحیح، status_text &: رشته): سرآیندنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Headers.salam
صندوق تازه NewInbox
تابع صندوق تازه(nc: اتصال نتس): رشته// زبان: فارسی
واردسازی شبکه.نتس
تابع ریشه(): صحیح:
ناپایا nc := نتس.برقراری اتصال("nats://127.0.0.1:4222")
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
r := نتس.درخواست(nc، "time.now"، ""، 1000)
اگر r.سالم:
سرچاپ "answer:"، r.داده
وگرنه:
سرچاپ "no answer:"، r.خطا
پایان
ناپایا h := نتس.سرآیند تازه()
نتس.افزودن سرآیند(h، "Trace-Id"، "abc-123")
r2 := نتس.درخواست با سرآیند(nc، "svc.echo"، h، "ping"، 1000)
سرچاپ r2.سالم، r2.داده
inbox := نتس.صندوق تازه(nc)
نتس.انتشار درخواست(nc، "svc.echo"، inbox، "fire")
reply := نتس.اشتراک(nc، inbox)
سرچاپ نتس.پیام بعدی(nc، reply، 500).سالم
سرچاپ "drained:"، نتس.تخلیه کامل(nc، 1000)
برگشت 0
پایانموضوع معتبر ValidSubject
تابع موضوع معتبر(subject: رشته): منطقی// زبان: فارسی
واردسازی شبکه.نتس
تابع ریشه:
سرچاپ نتس.موضوع معتبر("orders.eu.new")، نتس.موضوع معتبر("orders..new")، نتس.موضوع معتبر("a b")
سرچاپ نتس.تطبیق موضوع("orders.*"، "orders.new")، نتس.تطبیق موضوع("orders.*"، "orders.eu.new")
سرچاپ نتس.تطبیق موضوع("orders.>"، "orders.eu.new")، نتس.تطبیق موضوع("orders.>"، "orders")
پایانتطبیق موضوع SubjectMatches
تابع تطبیق موضوع(pattern: رشته، subject: رشته): منطقی* یک بخش و > در انتها یک یا چند بخش را میگیرد.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Subjects.salam
پردازش Pump
تابع پردازش(nc &: اتصال نتس، timeout_ms: صحیح): صحیحtimeout_ms از سوکت میخواند، آنچه رسیده را پردازش میکند و شمار پیامهای پردازششده را برمیگرداند. دستگیرهها از همینجا اجرا میشوند، پس اگر از آنها استفاده میکنید آن را در حلقه صدا بزنید.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Handlers.salam
برقراری اتصال Connect
تابع برقراری اتصال(url: رشته): اتصال نتسنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
برقراری اتصال با گزینه ConnectWith
تابع برقراری اتصال با گزینه(url: رشته، opts: گزینه ها): اتصال نتسنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
وصل است IsConnected
تابع وصل است(nc: اتصال نتس): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
بسته شده است IsClosed
تابع بسته شده است(nc: اتصال نتس): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
آخرین خطا LastError
تابع آخرین خطا(nc: اتصال نتس): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
بستن Close
تابع بستن(nc &: اتصال نتس)تخلیه کامل استفاده کنید.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
انتشار Publish
تابع انتشار(nc &: اتصال نتس، subject: رشته، data: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
انتشار درخواست PublishRequest
تابع انتشار درخواست(nc &: اتصال نتس، subject: رشته، reply: رشته، data: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Request.salam
انتشار با سرآیند PublishHeaders
تابع انتشار با سرآیند(nc &: اتصال نتس، subject: رشته، h: سرآیند، data: رشته): منطقیانتشار پیام PublishMsg
تابع انتشار پیام(nc &: اتصال نتس، m: پیام): منطقیپیام را با موضوع، پاسخ، سرآیند و بارش منتشر میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Handlers.salam
پاسخ Respond
تابع پاسخ(nc &: اتصال نتس، m: پیام، data: رشته): منطقیاشتراک Subscribe
تابع اشتراک(nc &: اتصال نتس، subject: رشته): نشانگر اشتراکپیام بعدی بخوانید.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
اشتراک صف QueueSubscribe
تابع اشتراک صف(nc &: اتصال نتس، subject: رشته، queue: رشته): نشانگر اشتراکنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
اشتراک با دستگیره SubscribeHandler
تابع اشتراک با دستگیره(nc &: اتصال نتس، subject: رشته، queue: رشته، handler: تابع(پیام)): نشانگر اشتراکپردازش صدا میزند. queue میتواند خالی باشد.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Handlers.salam
اشتراک پاسخگو SubscribeReplier
تابع اشتراک پاسخگو(nc &: اتصال نتس، subject: رشته، queue: رشته، handler: تابع(پیام): رشته): نشانگر اشتراکاشتراک با دستگیره، و متنی که تابع برمیگرداند به عنوان پاسخ فرستاده میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Handlers.salam
لغو اشتراک Unsubscribe
تابع لغو اشتراک(nc &: اتصال نتس، s: نشانگر اشتراک): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
لغو خودکار اشتراک AutoUnsubscribe
تابع لغو خودکار اشتراک(nc &: اتصال نتس، s: نشانگر اشتراک، max: صحیح): منطقیmax پیام خودکار پایان میدهد.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
اشتراک فعال است IsValidSubscription
تابع اشتراک فعال است(nc: اتصال نتس، s: نشانگر اشتراک): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
تحویل شده Delivered
تابع تحویل شده(nc: اتصال نتس، s: نشانگر اشتراک): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
صف مانده Pending
تابع صف مانده(nc: اتصال نتس، s: نشانگر اشتراک): صحیحپیام بعدی هستند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
پیام بعدی NextMsg
تابع پیام بعدی(nc &: اتصال نتس، s: نشانگر اشتراک، timeout_ms: صحیح): پیامسالم نادرست و خطا برابر timeout است.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
تخلیه Flush
تابع تخلیه(nc &: اتصال نتس، timeout_ms: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
درخواست Request
تابع درخواست(nc &: اتصال نتس، subject: رشته، data: رشته، timeout_ms: صحیح): پیامنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Request.salam
درخواست با سرآیند RequestMsg
تابع درخواست با سرآیند(nc &: اتصال نتس، subject: رشته، h: سرآیند، data: رشته، timeout_ms: صحیح): پیامدرخواست، همراه با سرآیند.نمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Request.salam
تخلیه کامل Drain
تابع تخلیه کامل(nc &: اتصال نتس، timeout_ms: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Request.salam
بیشینه اندازه بار MaxPayload
تابع بیشینه اندازه بار(nc: اتصال نتس): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Connect.salam
شمار اشتراک SubscriptionCount
تابع شمار اشتراک(nc: اتصال نتس): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-PubSub.salam
در حال اتصال دوباره IsReconnecting
تابع در حال اتصال دوباره(nc: اتصال نتس): منطقی// زبان: فارسی
واردسازی شبکه.نتس
تابع ریشه(): صحیح:
ناپایا opts := نتس.گزینه های پیشفرض()
opts.کارگزارها.بیفزا("nats://10.0.0.2:4222")
opts.کارگزارها.بیفزا("nats://10.0.0.3:4222")
opts.بیشینه اتصال دوباره = 20
opts.انتظار اتصال دوباره میلیثانیه = 500
opts.بافر اتصال دوباره = 1048576
ناپایا nc := نتس.برقراری اتصال با گزینه("nats://10.0.0.1:4222"، opts)
اگر وارونه نتس.وصل است(nc):
سرچاپ "cannot connect:"، نتس.آخرین خطا(nc)
برگشت 1
پایان
sub := نتس.اشتراک(nc، "metrics.>")
تا وارونه نتس.بسته شده است(nc):
m := نتس.پیام بعدی(nc، sub، 1000)
اگر m.سالم:
سرچاپ m.موضوع، m.داده
پایان
اگر نتس.در حال اتصال دوباره(nc):
سرچاپ "link is down, buffered"، نتس.بایتهای بافر شده(nc)، "bytes"
نتس.انتشار(nc، "audit"، "waiting for the server")
پایان
اگر نتس.بسته شده است(nc):
بشکن
پایان
پایان
سرچاپ "reconnected"، نتس.شمار اتصال دوباره(nc)، "times"
نتس.بستن(nc)
برگشت 0
پایانشمار اتصال دوباره Reconnects
تابع شمار اتصال دوباره(nc: اتصال نتس): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Reconnect.salam
بایتهای بافر شده BufferedBytes
تابع بایتهای بافر شده(nc: اتصال نتس): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: net-nats-Reconnect.salam