Pub/sub API reference

    This endpoint lets you publish data to multiple consumers who are listening on a . Dapr guarantees at least once semantics for this endpoint.

    HTTP 响应码

    参数说明
    daprPortdapr 端口。
    pubsubnamethe name of pubsub component
    topicthe name of the topic
    metadataquery parameters for metadata as described below
    1. curl -X POST http://localhost:3500/v1.0/publish/pubsubName/deathStarStatus \
    2. -H "Content-Type: application/json" \
    3. -d '{
    4. "status": "completed"
    5. }'

    Headers

    The Content-Type header tells Dapr which content type your data adheres to when constructing a CloudEvent envelope. The value of the Content-Type header populates the datacontenttype field in the CloudEvent. Unless specified, Dapr assumes text/plain. If your content type is JSON, use a Content-Type header with the value of .

    If you want to send your own custom CloundEvent, use the application/cloudevents+json value for the Content-Type header.

    元数据(Metadata)

    Metadata can be sent via query parameters in the request’s URL. It must be prefixed with metadata. as shown below.

    Dapr will invoke the following endpoint on user code to discover topic subscriptions:

    HTTP 请求

    URL 参数

    参数说明
    appPort应用程序端口

    HTTP Response body

    A json encoded array of strings.

    You can run Kafka locally using this Docker image. To run without Docker, see the getting started guide .

    1. [
    2. {
    3. "topic": "newOrder",
    4. "route": "/orders",
    5. "metadata": {
    6. "rawPayload": "true",
    7. }
    8. ]

    元数据(Metadata)

    Optionally, metadata can be sent via the request body.

    Provide route(s) for Dapr to deliver topic events

    The following example illustrates this point, considering a subscription for topic newOrder with route orders on port 3000: POST http://localhost:3000/orders

    HTTP 请求

    URL 参数

    参数说明
    appPort应用程序端口
    pathroute path from the subscription configuration

    Expected HTTP Response

    An HTTP 2xx response denotes successful processing of message. For richer response handling, a JSON encoded payload body with the processing status can be sent:

    1. {
    2. "status": "<status>"
    3. }

    Dapr assumes a JSON encoded payload response without status field or an empty payload responses with HTTP 2xx, as .

    The HTTP response might be different from HTTP 2xx, the following are Dapr’s behavior in different HTTP statuses:

    HTTP Status说明
    2xxmessage is processed as per status in payload (SUCCESS if empty; ignored if invalid payload).
    404error is logged and message is dropped
    otherwarning is logged and message to be retried