5.3 KiB
type | title | linkTitle | description | aliases | |
---|---|---|---|---|---|
docs | Solace-AMQP | Solace-AMQP | Detailed documentation on the Solace-AMQP pubsub component |
|
Component format
To set up Solace-AMQP pub/sub, create a component of type pubsub.solace.amqp
. See the [pub/sub broker component file]({{< ref setup-pubsub.md >}}) to learn how ConsumerID is automatically generated. Read the [How-to: Publish and Subscribe guide]({{< ref "howto-publish-subscribe.md#step-1-setup-the-pubsub-component" >}}) on how to create and apply a pub/sub configuration.
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: solace
spec:
type: pubsub.solace.amqp
version: v1
metadata:
- name: url
value: 'amqp://localhost:5672'
- name: username
value: 'default'
- name: password
value: 'default'
- name: consumerID
value: 'channel1'
{{% 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 |
---|---|---|---|
url | Y | Address of the AMQP broker. Can be secretKeyRef to use a secret reference. Use the amqp:// URI scheme for non-TLS communication. Use the amqps:// URI scheme for TLS communication. |
"amqp://host.domain[:port]" |
username | Y | The username to connect to the broker. Only required if anonymous is not specified or set to false . |
default |
password | Y | The password to connect to the broker. Only required if anonymous is not specified or set to false . |
default |
consumerID | N | Consumer ID (consumer tag) organizes one or more consumers into a group. Consumers with the same consumer ID work as one virtual consumer; for example, a message is processed only once by one of the consumers in the group. If the consumerID is not provided, the Dapr runtime set it to the Dapr application ID (appID ) value. |
Can be set to string value (such as "channel1" in the example above) or string format value (such as "{podName}" , etc.). [See all of template tags you can use in your component metadata.]({{< ref "component-schema.md#templated-metadata-values" >}}) |
anonymous | N | To connect to the broker without credential validation. Only works if enabled on the broker. A username and password would not be required if this is set to true . |
true |
caCert | Required for using TLS | Certificate Authority (CA) certificate in PEM format for verifying server TLS certificates. | "-----BEGIN CERTIFICATE-----\n<base64-encoded DER>\n-----END CERTIFICATE-----" |
clientCert | Required for using TLS | TLS client certificate in PEM format. Must be used with clientKey . |
"-----BEGIN CERTIFICATE-----\n<base64-encoded DER>\n-----END CERTIFICATE-----" |
clientKey | Required for using TLS | TLS client key in PEM format. Must be used with clientCert . Can be secretKeyRef to use a secret reference. |
"-----BEGIN RSA PRIVATE KEY-----\n<base64-encoded PKCS8>\n-----END RSA PRIVATE KEY-----" |
Communication using TLS
To configure communication using TLS:
- Ensure that the Solace broker is configured to support certificates.
- Provide the
caCert
,clientCert
, andclientKey
metadata in the component configuration.
For example:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: solace
spec:
type: pubsub.solace.amqp
version: v1
metadata:
- name: url
value: "amqps://host.domain[:port]"
- name: username
value: 'default'
- name: password
value: 'default'
- name: caCert
value: ${{ myLoadedCACert }}
- name: clientCert
value: ${{ myLoadedClientCert }}
- name: clientKey
secretKeyRef:
name: mySolaceClientKey
key: mySolaceClientKey
auth:
secretStore: <SECRET_STORE_NAME>
While the
caCert
andclientCert
values may not be secrets, they can be referenced from a Dapr secret store as well for convenience.
Publishing/subscribing to topics and queues
By default, messages are published and subscribed over topics. If you would like your destination to be a queue, prefix the topic with queue:
and the Solace AMQP component will connect to a queue.
Create a Solace broker
{{< tabs "Self-Hosted" "SaaS">}}
{{% codetab %}} You can run a Solace broker locally using Docker:
docker run -d -p 8080:8080 -p 55554:55555 -p 8008:8008 -p 1883:1883 -p 8000:8000 -p 5672:5672 -p 9000:9000 -p 2222:2222 --shm-size=2g --env username_admin_globalaccesslevel=admin --env username_admin_password=admin --name=solace solace/solace-pubsub-standard
You can then interact with the server using the client port: mqtt://localhost:5672
{{% /codetab %}}
{{% codetab %}} You can also sign up for a free SaaS broker on Solace Cloud. {{% /codetab %}}
{{< /tabs >}}
Related links
- [Basic schema for a Dapr component]({{< ref component-schema >}})
- Read [this guide]({{< ref "howto-publish-subscribe.md#step-2-publish-a-topic" >}}) for instructions on configuring pub/sub components
- [Pub/sub building block]({{< ref pubsub >}})