ဤပရောဂျက်သည် Spring Boot WebFlux ဖြင့် Server-Sent Events (SSE) ကို အသုံးပြု၍ HTTP streaming ကို ပြသသည်။ အောက်ပါ အပလီကေးရှင်း နှစ်ခု ပါဝင်သည်-
- Calculator Server: တွက်ချက်မှုများ ပြုလုပ်ပြီး SSE ဖြင့် ရလဒ်များကို စီးဆင်းပေးသည့် reactive web service
- Calculator Client: streaming endpoint ကို အသုံးပြုသည့် client application
- Java 17 သို့မဟုတ် အထက်
- Maven 3.6 သို့မဟုတ် အထက်
java/
├── calculator-server/ # Spring Boot server with SSE endpoint
│ ├── src/main/java/com/example/calculatorserver/
│ │ ├── CalculatorServerApplication.java
│ │ └── CalculatorController.java
│ └── pom.xml
├── calculator-client/ # Spring Boot client application
│ ├── src/main/java/com/example/calculatorclient/
│ │ └── CalculatorClientApplication.java
│ └── pom.xml
└── README.md
-
Calculator Server သည်
/calculateendpoint ကို ဖော်ပြပြီး-- query parameters များကို လက်ခံသည်-
a(နံပါတ်),b(နံပါတ်),op(လုပ်ဆောင်ချက်) - ထောက်ခံသော လုပ်ဆောင်ချက်များ-
add,sub,mul,div - တွက်ချက်မှု တိုးတက်မှုနှင့် ရလဒ်များကို Server-Sent Events အဖြစ် ပြန်ပေးပို့သည်
- query parameters များကို လက်ခံသည်-
-
Calculator Client သည် server နှင့် ချိတ်ဆက်ပြီး-
7 * 5တွက်ချက်ရန် တောင်းဆိုသည်- streaming ဖြင့် ပြန်လာသော တုံ့ပြန်ချက်ကို စားသုံးသည်
- တစ်ခုချင်းစီသော event များကို console တွင် ပုံနှိပ်ပြသည်
terminal တစ်ခု ဖွင့်ပြီး server directory သို့ သွားပါ-
cd calculator-server
mvn clean package
mvn spring-boot:runserver သည် http://localhost:8080 တွင် စတင်လည်ပတ်မည်
အောက်ပါအတိုင်း output ကို မြင်ရမည်-
Started CalculatorServerApplication in X.XXX seconds
Netty started on port 8080 (http)
terminal အသစ်တစ်ခု ဖွင့်ပြီး client directory သို့ သွားပါ-
cd calculator-client
mvn clean package
mvn spring-boot:runclient သည် server နှင့် ချိတ်ဆက်ပြီး တွက်ချက်မှုကို ပြုလုပ်ကာ streaming ရလဒ်များကို ပြသမည်။
cd calculator-server
mvn clean package
java -jar target/calculator-server-0.0.1-SNAPSHOT.jarcd calculator-client
mvn clean package
java -jar target/calculator-client-0.0.1-SNAPSHOT.jarweb browser သို့မဟုတ် curl ဖြင့် server ကို စမ်းသပ်နိုင်သည်-
သွားရောက်ရန်- http://localhost:8080/calculate?a=10&b=5&op=add
curl "http://localhost:8080/calculate?a=10&b=5&op=add" -H "Accept: text/event-stream"client ကို run လုပ်သောအခါ streaming output ကို အောက်ပါအတိုင်း မြင်ရမည်-
event:info
data:Calculating: 7.0 mul 5.0
event:result
data:35.0
add- ပေါင်းခြင်း (a + b)sub- ဖြုတ်ခြင်း (a - b)mul- မြှောက်ခြင်း (a * b)div- ခွဲခြင်း (a / b, b = 0 ဖြစ်ပါက NaN ပြန်ပေးသည်)
Parameters:
a(လိုအပ်သည်): ပထမနံပါတ် (double)b(လိုအပ်သည်): ဒုတိယနံပါတ် (double)op(လိုအပ်သည်): လုပ်ဆောင်ချက် (add,sub,mul,div)
Response:
- Content-Type:
text/event-stream - တွက်ချက်မှု တိုးတက်မှုနှင့် ရလဒ်များကို Server-Sent Events အဖြစ် ပြန်ပေးပို့သည်
ဥပမာ တောင်းဆိုမှု:
GET /calculate?a=7&b=5&op=mul HTTP/1.1
Host: localhost:8080
Accept: text/event-stream
ဥပမာ တုံ့ပြန်မှု:
event: info
data: Calculating: 7.0 mul 5.0
event: result
data: 35.0
-
Port 8080 ကို အခြား application တစ်ခု အသုံးပြုနေခြင်း
- port 8080 ကို အသုံးပြုနေသော အခြား application များကို ပိတ်ပါ
- ဒါမှမဟုတ်
calculator-server/src/main/resources/application.ymlတွင် server port ကို ပြောင်းပါ
-
ချိတ်ဆက်မှု ပယ်ချခြင်း
- client စတင်မလုပ်မီ server သည် လည်ပတ်နေသည်ကို သေချာစေပါ
- server သည် port 8080 တွင် အောင်မြင်စွာ စတင်လည်ပတ်နေသည်ကို စစ်ဆေးပါ
-
parameter name ပြဿနာများ
- ဤပရောဂျက်တွင် Maven compiler configuration တွင်
-parametersflag ပါဝင်သည် - parameter binding ပြဿနာများ ဖြစ်ပါက ဤ configuration ဖြင့် ပရောဂျက်ကို ပြန်လည်တည်ဆောက်ပါ
- ဤပရောဂျက်တွင် Maven compiler configuration တွင်
- တစ်ခုချင်းစီ လည်ပတ်နေသော terminal တွင်
Ctrl+Cကို နှိပ်ပါ - ဒါမှမဟုတ် background process အဖြစ် run လျှင်
mvn spring-boot:stopကို အသုံးပြုပါ
- Spring Boot 3.3.1 - အပလီကေးရှင်း framework
- Spring WebFlux - Reactive web framework
- Project Reactor - Reactive streams စာကြည့်တိုက်
- Netty - Non-blocking I/O server
- Maven - Build tool
- Java 17+ - Programming language
ကုဒ်ကို ပြင်ဆင်ကြည့်ပါ-
- သင်္ချာဆိုင်ရာ လုပ်ဆောင်ချက်များ ပိုမိုထည့်သွင်းရန်
- မှားယွင်းသော လုပ်ဆောင်ချက်များအတွက် error handling ထည့်သွင်းရန်
- တောင်းဆိုမှု/တုံ့ပြန်မှု logging ထည့်သွင်းရန်
- authentication ကို အကောင်အထည်ဖော်ရန်
- unit test များ ထည့်သွင်းရန်
အကြောင်းကြားချက်
ဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု Co-op Translator ဖြင့် ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားသော်လည်း အလိုအလျောက် ဘာသာပြန်ခြင်းတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ကြောင်း သတိပြုပါရန် မေတ္တာရပ်ခံအပ်ပါသည်။ မူရင်းစာတမ်းကို မိမိဘာသာစကားဖြင့်သာ တရားဝင်အချက်အလက်အဖြစ် ယူဆသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူ့ဘာသာပြန်ပညာရှင်မှ ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုရာမှ ဖြစ်ပေါ်လာနိုင်သည့် နားလည်မှုမှားယွင်းမှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။