Share via


Pub/Sub 토픽으로 메시지 보내기

적용 대상: 개발자 | 프리미엄

publish-to-dapr 정책은 API Management 게이트웨이가 Dapr 게시/구독 토픽에 메시지를 보내도록 지시합니다. 정책에서는 템플릿 매개 변수를 바꾸는 http://localhost:3500/v1.0/publish/{{pubsub-name}}/{{topic}}에 HTTP POST가 요청하게 하고 정책문에 지정된 콘텐츠를 추가함으로써 이 작업을 수행합니다.

이 정책에서는 Dapr 런타임이 게이트웨이와 동일한 pod의 사이드카 컨테이너에서 실행되고 있다고 가정합니다. Dapr 런타임에서는 Pub/Sub 의미 체계를 구현합니다. API Management의 Dapr 통합에 대해 자세히 알아보기

참고 항목

정책 문에 제공된 순서대로 정책의 요소 및 자식 요소를 설정합니다. API Management 정책을 설정하거나 편집하는 방법에 대해 자세히 알아봅니다.

정책 문

<publish-to-dapr pubsub-name="pubsub-name" topic="topic-name" ignore-error="false|true" response-variable-name="resp-var-name" timeout="in seconds" template="Liquid" content-type="application/json">
    <!-- message content -->
</publish-to-dapr>

특성

특성 설명 필수 항목 기본값
pubsub-name 대상 PubSub 구성 요소의 이름입니다. Dapr에서 pubsubname 매개 변수에 매핑됩니다. 표시되지 않는 경우 topic 특성 값은 pubsub-name/topic-name 형식이어야 합니다. 정책 식이 허용됩니다. 아니요 없음
토픽 토픽의 이름입니다. Dapr에서 토픽 매개 변수에 매핑됩니다. 정책 식이 허용됩니다. 해당 없음
ignore-error true로 설정하는 경우에는 Dapr 런타임에서 오류를 수신하는 동안 “오류 발생” 섹션을 트리거하지 않도록 정책에 지시합니다. 정책 식은 허용되지 않습니다. 아니요 false
response-variable-name Dapr 런타임의 응답을 저장하는 데 사용할 변수 컬렉션 항목의 이름입니다. 정책 식은 허용되지 않습니다. 아니요 없음
시간 제한 Dapr 런타임이 응답할 때까지 대기하는 시간(초)입니다. 범위는 1 ~ 240초입니다. 정책 식이 허용됩니다. 아니요 5
템플릿 메시지 콘텐츠를 변환하는 데 사용할 템플릿 엔진입니다. “액체”는 유일하게 지원되는 값입니다. 아니요 없음
content-type 메시지 콘텐츠의 유형입니다. “application/json”은 유일하게 지원되는 값입니다. 아니요 없음

사용

사용법 참고 사항

Dapr 지원은 자체 호스팅 게이트웨이에서 사용하도록 설정해야 합니다.

예시

다음 예제에서는 현재 요청의 본문을 “orders” Pub/Sub 구성 요소의 “new” 토픽으로 보내는 방법을 보여 줍니다. Dapr 런타임에서 받은 응답은 컨텍스트 개체의 Variables 컬렉션의 “Dapr 응답” 항목에 저장됩니다.

예를 들어, Dapr 런타임이 대상 토픽을 찾을 수 없는 경우 및 오류로 응답하는 경우에는 “오류 발생” 섹션이 트리거됩니다. Dapr 런타임에서 받은 응답은 호출자 그대로 반환됩니다. 대상 토픽을 찾은 경우 기본 200 OK 응답이 반환됩니다.

“백 엔드” 섹션이 비어 있고 요청이 백 엔드로 전달되지 않습니다.

<policies>
     <inbound>
        <base />
        <publish-to-dapr
           pubsub-name="orders"
               topic="new"
               response-variable-name="dapr-response">
            @(context.Request.Body.As<string>())
        </publish-to-dapr>
    </inbound>
    <backend>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <return-response response-variable-name="pubsub-response" />
    </on-error>
</policies>

정책 작업에 대한 자세한 내용은 다음을 참조하세요.