---
type: docs
title: "RocketMQ"
linkTitle: "RocketMQ"
description: "Detailed documentation on the RocketMQ pubsub component"
aliases:
  - "/operations/components/setup-pubsub/supported-pubsub/setup-rocketmq/"
---

## Component format
To setup RocketMQ pubsub, create a component of type `pubsub.rocketmq`. See [this guide]({{< ref "howto-publish-subscribe.md#step-1-setup-the-pubsub-component" >}}) on how to create and apply a pubsub configuration.

```yaml
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: rocketmq-pubsub
spec:
  type: pubsub.rocketmq
  version: v1
  metadata:
    - name: nameServer
      value: "http://localhost:9876"
    - name: accessKey
      value: "admin"
    - name: secretKey
      value: "password"
    - name: consumerGroup
      value: "GID_0001"
    - name: retries
      value: 10
```

{{% alert title="Warning" color="warning" %}}
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}).
{{% /alert %}}

## Spec metadata fields
| Field            | Required | Details                                                                                                   | Example                            |
| ---------------- | :------: | --------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| accessKey        |    N     | Access Key (Username)                                                                                     | `"admin"`                          |
| secretKey        |    N     | Secret Key (Password)                                                                                     | `"password"`                       |
| nameServer       |    N     | Name server address                                                                                       | `"127.0.0.1:9876;127.0.0.2:9877"`  |
| nameServerDomain |    N     | Name server domain                                                                                        | `"https://my-app.net:8080/nsaddr"` |
| nameSpace        |    N     | Namespace of the producer/consumer                                                                        | `"namespace"`                      |
| producerGroup    |    N     | Producer group name for RocketMQ publishers                                                               | `"my_unique_group_name"`           |
| consumerGroup    |    N     | Consumer group name for RocketMQ subscribers                                                              | `"my_unique_group_name"`           |
| content-type     |    N     | Message content-type, e.g., `"application/cloudevents+json; charset=utf-8"`, `"application/octet-stream"` | `"text/plain"`                     |
| retries          |    N     | Number of times to retry to connect rocketmq's broker, optional                                           | `0`                                |
| sendTimeOutSec   |    N     | Timeout duration for publishing a message in seconds                                                      | `0`                                |

For backwards-compatibility reasons, the following values in the metadata are supported, although their use is discouraged.

| Field (supported but deprecated) | Required | Details                                                  | Example                  |
| -------------------------------- | :------: | -------------------------------------------------------- | ------------------------ |
| groupName                        |    N     | Producer group name for RocketMQ publishers              | `"my_unique_group_name"` |
| sendTimeOut                      |    N     | Timeout duration for publishing a message in nanoseconds | `0`                      |

## Setup RocketMQ
See https://rocketmq.apache.org/docs/quick-start/ to setup a local RocketMQ instance.

## Per-call metadata fields

### Partition Key

When invoking the RocketMQ pub/sub, it's possible to provide an optional partition key by using the `metadata` query param in the request url.

You need to specify `rocketmq-tag`,`"rocketmq-key"` in `metadata`

Example:

```shell
curl -X POST http://localhost:3500/v1.0/publish/myRocketMQ/myTopic?metadata.rocketmq-tag=?&metadata.rocketmq-key=? \
  -H "Content-Type: application/json" \
  -d '{
        "data": {
          "message": "Hi"
        }
      }'
```

## Related links
- [Basic schema for a Dapr component]({{< ref component-schema >}})
- [Pub/Sub building block]({{< ref pubsub >}})
- Read [this guide]({{< ref "howto-publish-subscribe.md#step-2-publish-a-topic" >}}) for instructions on configuring pub/sub components
