μλ νμΈμ, μ€λλ§μ κΈμ μλλ€.
μ€λ 곡μ λ리λ λ΄μ©μ λΆμ°μμ€ν μμ DLQ μ²λ¦¬νλ λ°©λ²μ λν κ²μ λλ€.
μ κ° κ΄λ¦¬νλ μμ€ν μ€ νλκ° μ£Όλ‘ μΉ΄νμΉ΄ λ©μμ§λ₯Ό 컨μ¨νμ¬ μ²λ¦¬νλ μΌμ νλ μμ€ν μ λλ€.
μ¬λ¬ κ°μ μΈμ€ν΄μ€κ° μ‘΄μ¬νκ³ λͺ¨λ λμΌν μμ€μ½λκ° λ°°ν¬λμ΄μμ£ .
μμ€μ½λμλ JPAλ₯Ό μ΄μ©ν CRUD λ‘μ§μ΄ λ€μ΄μμ΅λλ€.
λ¬Έμ κ° μλ μμ€ν μΈλ° κ΄λ ¨λΆμμμ νν°μ κ°μλ₯Ό λ리면μ λ¬Έμ κ° μκ²Όμ΅λλ€.
λ¨μν νν°μ κ°μκ° λμ΄λκ² λ¬Έμ κ° μλλΌ κ·Έμͺ½μμ 보λ΄λ μΉ΄νμΉ΄ λ©μμ§μ νΉμ±κ³Όλ κ΄λ ¨μ΄ μμμ£ .
νν°μ λ§λ€ μλ‘ λ€λ₯Έ μΈμ€ν΄μ€μμ μ²λ¦¬νμ§λ§ κ° λ©μμ§μλ μλ‘ μ€λ³΅λ λ°μ΄ν°μ λ΄μ©μ΄ λ€μ΄κ° μλ ννμκ³ (μ΄κ±΄ λ μ κ° μ΄μ° ν μ μλ κ²μ΄μ£ ), λμΌν λ°μ΄ν°λ₯Ό μλ‘ λ€λ₯Έ μΈμ€ν΄μ€μμ JPAλ₯Ό μ΄μ©ν΄μ μ²λ¦¬νλ€κ° λλ¬Όκ² ObjectOptimisticLockingFailureException μ΄ λ°μνκΈ° μμνμ΅λλ€.
μλ₯Όλ€μ΄ μΈμ€ν΄μ€ 1λ²μμ {A, B} λΌλ λ©μμ§λ₯Ό μ²λ¦¬ν λ μΈμ€ν΄μ€ 2λ²μμ {A,C}, 3λ² μΈμ€ν΄μ€μμ {A,D} λ©μμ§λ₯Ό μ²λ¦¬νλ©΄μ A λ°μ΄ν°λ₯Ό 3λμ μΈμ€ν΄μ€μμ λμμ μ²λ¦¬νλ €κ³ νκ±°μ£ . μΈ κ°μ λ©μμ§λ μλ‘ λ€λ₯Έ λ°μ΄ν°λ λ€κ³ μμΌλ―λ‘ λ¬΄μ‘°κ±΄ μ²λ¦¬λ₯Ό ν΄μ€μΌ νλ κ²λ€μ΄μμ΅λλ€.
μ΄κ±Έ μ΄λ»κ² ν κΉ κ³ λ―Όνλ€κ° SQSλ₯Ό DLQλ₯Ό μ΄μ©νμ¬ Lambda μ μ°κ²°μμΌ μΌμ μκ°μ΄ μ§λ λ€μ μλλκΈ°ν APIλ₯Ό νΈμΆνλλ‘ κ΅¬μ±νκΈ°λ‘ νμ΅λλ€.
μ΄λ κ² ν μ΄μ λ κ°μ₯ λΉ λ₯Έμκ°μ μΆκ°μ μΈ μμ€κ΅¬ν μμ΄ ν¨κ³Όμ μΌλ‘ λͺ©μ μ λ¬μ±ν μ μμκΈ° λλ¬Έμ λλ€.
λ§μ½ DLQλ‘ λ€μ΄μ€λ λ©μμ§κ° λ§μμ§λ€λ©΄ μμ€μ½λλ₯Ό ꡬννλκ² λΉμ©μΈ‘λ©΄μμ λ ν¨μ¨μ μ λλ€.
μΈμ€ν΄μ€λ μ΄μ°¨νΌ λ μμ΄μΌ νλκ±°κ³ λλ€λ₯Ό μ κ±°ν μ μμΌλ λλ€μμ λ°μνλ λΉμ©μ΄ μ€μ΄λλλ€.
νμ§λ§ μμ€μ½λ ꡬνμ κ³ λ €ν΄μΌν μ μ΄ μμ£ . μΈμ€ν΄μ€κ° μ¬λ¬κ° λ μμ§λ§ νλμ μΈμ€ν΄μ€μμλ§ DLQμ λ©μμ§λ₯Ό μ²λ¦¬νλλ‘ ν΄μΌνλ€λ κ±°μ£ . κ·Έλ μ§ μμΌλ©΄ λ μ²λ¦¬μ μ€ν¨νλ κ²½μ°κ° λ°μν ν λκΉμ. κ·Έλ¦¬κ³ λͺ¨λ μΈμ€ν΄μ€μ λμΌν μμ€μ½λκ° λ°°ν¬λμ΄μΌ νλλ° νλμ μΈμ€ν΄μ€μμλ§ μ€νμ΄ λλλ‘ νλ €λ©΄ λ μ΄λ°μ λ° μ½λλ₯Ό μμ±ν΄μΌ νλ€λ³΄λ λλ€λ₯Ό μ΄μ©νκΈ°λ‘ νμ΅λλ€.
μ무νΌ, SQSλ₯Ό DLQλ‘ μ΄μ©νκ³ , Lambda ν¨μλ₯Ό μ°κ²°μμΌ μΌμ μκ°λ€μ μλAPIλ₯Ό νΈμΆνμ¬ μ€ν¨νλ λ©μμ§μ λν μ 보λ₯Ό μ½μ΄μμ μ²λ¦¬νλλ‘ νμ΅λλ€.
μ΄λ κ² μ€μ ν΄λμΌλ©΄ SQS λ©μμ§κ° λ°νλ λλ§λ€ Lambda ν¨μλ₯Ό μ€ννλλ° Lambda ν¨μμμλ APIλ₯Ό νΈμΆνλλ‘ κ΅¬μ±νμ΅λλ€. λλ€ νΈλ¦¬κ±°μ λν λ΄μ©μ AWSμμλ λ€μκ³Ό κ°μ΄ μ€λͺ νκ³ μμ΅λλ€.
You can configure your Amazon SQS queue to trigger an AWS Lambda function when new messages arrive in the queue.
Your queue and Lambda function must be in the same AWS Region.
A Lambda function can use at most one queue as an event source. You can use the same queue with multiple Lambda functions.
You can't associate an encrypted queue that uses the AWS-managed CMK for Amazon SQS with a Lambda function in a different AWS account.
μ μ κ²½μ°μλ νμμκΈ΄νμ§λ§, νλμ SQSμ μ¬λ¬κ°μ λλ€ν¨μλ₯Ό μ°κ²°νμ¬ μ¬μ©ν μ μλ€λ μ μ΄ μ’μ보μ΄λ€μ.
μ, κ·Έλ¦¬κ³ SQSμ μ°κ²°ν Lambda ν¨μλ λ€μκ³Ό κ°μ΅λλ€.
import logging
import json
from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
logger = logging.getLogger()
logger.setLevel(logging.INFO)
API_URL = "https://company.com/employees/{}"
def lambda_handler(event, context):
message = json.loads(event['Records'][0]['body'])
url = API_URL.format(message['employeeId'])
headers = {'Content-type':'application/json'}
req = Request(url, headers=headers, data=b'', method='PUT')
try:
response = urlopen(req)
return response.getcode()
except HTTPError as e:
logger.error("Request failed: %d %s, sqsBody:%s", e.code, e.reason, message)
return e.code
except URLError as e:
logger.error("Server connection failed: %s, sqsBody:%s", e.reason, message)
return None
Pythonμ 곡λΆνμ μμΌλ, μλ°λ μ»΄νμΌμΈμ΄λΌ μ½λλ₯Ό μ§μ AWSμ½μμμ μμ±ν μ μμ΄μ pythonμΌλ‘ μμ±νμ΅λλ€.
λ΄μ©μ λ³κ±° μκ³ eventμ SQS λ©μμ§μ λ΄μ©μ΄ λ€μ΄μ€κΈ° λλ¬Έμ eventμμ λ©μμ§μ body λ΄μ©μ μΆμΆνμ¬ message λ³μμ λ£κ³ μ΄κ²μ API νΈμΆν λ μ¬μ©νκ²μ΄ λ€μ λλ€. μ¬κΈ°μλ employeeId κ°μ΄ SQS λ©μμ§μ {"employeeId":1234} ννλ‘ λ€μ΄μμλ€λ©΄, μ κΈ°μ 1234 κ°μ μΆμΆνμ¬ api νΈμΆν λ path variableλ‘ λ£μ΄μ https://company.com/employees/1234 λ₯Ό νΈμΆνλλ‘ νκ±°μ£ .
μ μ½λμμμ μλ¬κ° λ°μνλ©΄ κ·Έλ₯ λ‘κΉ νκ±°λ μλ¬μ½λ 리ν΄νλλ‘ ν΄λμλλ°, μλ¬κ±΄μ΄ λ§μ΄ λ°μνλ€λ©΄ μ¬λμλμ 보λ΄λλ‘ νλ κ²λ μ’μ κ² κ°μ΅λλ€.
μ΄μμΌλ‘ SQSμ Lambdaλ₯Ό μ΄μ©ν λΆμ°μ²λ¦¬μμ€ν μμμ DLQ μ²λ¦¬μ λν κΈ°λ‘μ λ§μΉ©λλ€.
'π» Programming' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[AWS] redis-cli λ₯Ό μ΄μ©ν elasticache λ°μ΄ν° μ‘°ν (0) | 2022.05.27 |
---|---|
[AWS] EC2 μμ Elasticache(Redis ν΄λ¬μ€ν°) μ μνκΈ° (0) | 2022.05.26 |
[Git] νΉμ κΈ°κ°λμ author λ³ μ»€λ° κ±΄μ νμΈνκΈ° (0) | 2022.05.17 |
AWS Elasticsearch ISMμ νμ©ν μΈλ±μ€ μλμμ (0) | 2021.04.21 |
SpringBoot 2 http response utf-8 μ€μ νκΈ° (0) | 2021.03.11 |