π λ°°κ²½
νλ‘μ νΈμμ Websocket + STOMPλ₯Ό νμ©νμ¬ μ μμ μ¬λ¬ λͺ μ΄ λμμ μμ νλ κΈ°λ₯μ μΆκ°ν΄μΌ νλ κ³Όμ μ΄ μμλ€. λ©μμ§μ μ μ‘νκΈ° μ κ³Ό νμ νΉμ μ²λ¦¬λ₯Ό ν΄μΌνλ κ³Όμ μ΄ μμλλ°, κ·Έλ ChannelInterceptor μΈν°νμ΄μ€μ λν΄ μκ² λμλ€.
ChannelInterceptor
ν΄λΉ μΈν°νμ΄μ€λ₯Ό ꡬννκ³ λ±λ‘νμ¬, λ©μμ§κ° μ‘/μμ λκΈ° μ λ©μμ§μ λ°μ΄ν° κ²μ¦ λ° λ³νμ ν μ μλ€.
ν΄λΉ μΈν°νμ΄μ€λ μ΄ 6κ°μ λ©μλλ₯Ό κ°μ§κ³ μμΌλ©° κΈ°λ₯μ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§κ³ μλ€.
1. preSend()
- λͺ¨λ μ νμ μ±λμ λν΄ νΈμΆλλ€.
- λ©μμ§κ° μ€μ λ‘ μ±λλ‘ μ μ‘λκΈ° μ μ νΈμΆλλ€.
- λ©μμ§(Message)μ MessageChannelμ λν μ°Έμ‘°λ μΈν°μ ν° λ©μλμ λ§€κ°λ³μλ‘ μ¬μ©ν μ μλ€.
- ν΄λΉ μμ μ νμ©ν΄μ νΉμ μ²λ¦¬λ§ νλ κ²½μ°(λ©μμ§ μμ X), λ§€κ°λ³μλ‘ μ λ¬λ λμΌν λ©μμ§λ₯Ό λ°νν΄μΌ νλ€.
- nullμ λ°ννμ¬ λ©μμ§ preSend()μ μ μ‘μ λ§μ μλ μλ€.
2. postSend()
- λͺ¨λ μ νμ μ±λμ λν΄ νΈμΆλλ€.
- MessageChannel.send() νΈμΆ μ§νμ νΈμΆλλ€.
- sent λ§€κ°λ³μ(boolean)λ λ©μμ§ μλκ° μ±κ³΅νλμ§ μ¬λΆλ₯Ό λνλΈλ€.
3. preReceive()
- ν΄λ§ κ°λ₯ν μ±λ(PollableChannel)μ λν΄μλ§ νΈμΆλλ€.
- PollableChannel.receive() λ©μλμ μν΄ λ©μμ§κ° λ°νλκΈ° μ μ νΈμΆλλ€.
- falseλ₯Ό λ°ννλ©΄ λ©μμ§ μ λ¬μ΄ μ°¨λ¨λλ€.
4. postReceive()
- ν΄λ§ κ°λ₯ν μ±λ(PollableChannel)μ λν΄μλ§ νΈμΆλλ€.
- PollableChannel.receive() λ©μλκ° μ λ¬λ λ©μμ§λ₯Ό λ°ν κ°μΌλ‘ μ¬μ©νλ©°, μμ λ©μλλ‘ λ°ννκΈ° μ§μ μ νΈμΆλλ€.
- ν΄λΉ μμ μ νμ©ν΄μ νΉμ μ²λ¦¬λ§ νλ κ²½μ°(λ©μμ§ μμ X), λ§€κ°λ³μλ‘ μ λ¬λ λμΌν λ©μμ§λ₯Ό λ°νν΄μΌ νλ€.
5. afterSendCompletion()
- μμΈ λ°μ μ¬λΆμ κ΄κ³μμ΄ μμ μλ£ ν νΈμΆλλ€.
- μ μ ν 리μμ€ μ λ¦¬κ° κ°λ₯νλ€.
- preSend()κ° λ©μμ§(Message)λ₯Ό λ°ννλ κ²½μ°μλ§ νΈμΆλλ€.
- preSend()κ° nullμ λ°ννλ κ²½μ° νΈμΆλμ§ μλλ€.
6. afterReceiveCompletion()
- μμΈ λ°μ μ¬λΆμ κ΄κ³μμ΄ μμ μλ£ ν νΈμΆλλ€.
- μ μ ν 리μμ€ μ λ¦¬κ° κ°λ₯νλ€.
- preReceive()κ° trueλ₯Ό λ°ννλ κ²½μ°μλ§ νΈμΆλλ€.
REFERENCE
'Spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μΈλΆ λΌμ΄λΈλ¬λ¦¬ λ΄λΆ sendRedirect() μ¬μ© μ°ν λ°©λ² (0) | 2023.08.26 |
---|---|
nginxμμ μλ²λ‘ λλ©μΈ μ λ¬νκΈ° (0) | 2023.08.26 |
Spring RedisSerializer μ’ λ₯μ νΉμ§ (0) | 2023.07.15 |
Spring Boot 3 νκ²½μμ KeyCloak μ μ©νκΈ° (0) | 2023.06.25 |
Spring Boot 3 + JPAλ₯Ό νμ©ν Liquibase μ€μ΅νκΈ° (4, final) (0) | 2023.06.06 |
λκΈ