2016-11-10 2 views
1

응용 프로그램 간의 요청/응답에 RabbitMQ를 사용할 시스템을 설계하고 있습니다.RabbitMQ 요청/응답 페이로드 구조

저는 REST API를 사용하여 그 배경에서부터 익숙해졌습니다. 요청/응답을 할 때 메시지를 구조화하는 방법을 생각해 왔습니다. 클라이언트 측 오류

처리 원격 서버

  • 에 데이터를 작성 원격 서버
  • 에서 데이터를 쿼리/받기

    • :

      나는 몇 가지 시나리오를 처리 할을 구성 할 필요가 페이로드 JSON 형식을 사용할 계획입니다. 그리고 나는 (아마도 같은 코드를 사용하여) HTTP와 비슷한 종류의 응답 코드를 사용하고 메시지의 속성/헤더로 응답 코드를 설정하려고 생각하고있었습니다.

      제 아이디어를 얻으려면 페이로드 개체에 쿼리 속성이 있어야합니다.

      하지만 REST API와 너무 흡사하게 생각할 수도 있고 더 나은 방법으로이를 구현할 수도 있습니다.

      나는 이것을 설정하는 동안 "RabbitMQ in Action"이라는 책을 읽었지만 거기에 대해서는 언급하지 않았다. 내 google-fu도 나를 실패 시켰으며 어떤 결과도 제공하지 못했습니다.

      메시지 구조화 경험이있는 사람은 누구입니까?

  • 답변

    2

    REST 호출을 처리하기 위해 이미 익숙하거나 구현 된 응용 프로그램 중 요청/응답 시나리오에서 RabbitMQ를 사용하는 경우 메시지 형식에 대해 RabbitMQ에서 벗어날 필요가 없습니다.

    내가 수집 한 것은 RabbitMQ가 응용 프로그램 사이의 중간 서버 역할을한다는 것입니다. 세 가지 시나리오를 언급합니다. 데이터를 가져오고 데이터를 쓰는 경우 RabbitMQ는 데이터 검색 또는 쓰기를 요청하는 응용 프로그램과 데이터를 검색하고 쓰는 응용 프로그램 간의 라우터 역할 만합니다. 그렇다면 응용 프로그램 (데이터가있는 서버)이 지원할 수있는 표준 메시지 형식이 이미 있습니다. 이미 정의 된 표준이 없다고 가정합니다. 이 경우 요청 페이로드에서 응용 프로그램이 기대하는 측면에서 생각할 수 있습니다. 이 단계에서 중간 RabbitMQ 서버를 잊어 버리십시오. RabbitMQ 메시지를 생각하면 모범 사례를 사용하지 못할 수 있습니다.

    클라이언트 쪽 오류의 경우 소비자의 RabbitMQ 오류를 방해하므로 HTTP 상태 코드를 헤더로 직접 설정할 수 없습니다. 이 경우 사용자 지정 헤더를 전달하고 나중에 HTTP 상태 코드로 변환하여 사용자 지정을 사용해야합니다.