diff --git a/pubsub/jetstream/metadata.yaml b/pubsub/jetstream/metadata.yaml new file mode 100644 index 0000000000..0124f6a525 --- /dev/null +++ b/pubsub/jetstream/metadata.yaml @@ -0,0 +1,196 @@ +# yaml-language-server: $schema=../../../component-metadata-schema.json +schemaVersion: v1 +type: pubsub +name: jetstream +version: v1 +status: beta +title: "JetStream" +urls: + - title: Reference + url: https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-jetstream/ +authenticationProfiles: + - title: "Basic Authentication" + description: "Connect to NATS JetStream without authentication." + metadata: + - name: natsURL + type: string + required: true + description: The NATS server URL. + example: "nats://localhost:4222" + - title: "Token Authentication" + description: "Connect to NATS JetStream using token authentication." + metadata: + - name: natsURL + type: string + required: true + description: The NATS server URL. + example: "nats://localhost:4222" + - name: token + type: string + required: true + description: The NATS authentication token. + example: "auth-token" + - title: "JWT Authentication" + description: "Connect to NATS JetStream using JWT authentication." + metadata: + - name: natsURL + type: string + required: true + description: The NATS server URL. + example: "nats://localhost:4222" + - name: jwt + type: string + required: true + description: The JWT token for authentication. + example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." + - name: seedKey + type: string + required: true + description: The seed key for JWT authentication. + example: "SUAELX7XZIRRCNOQKCXQWFN6M3EBKUTBWK6YQKL4QFLKCUQJSEZL7ZCL7KQ" + - title: "TLS Authentication" + description: "Connect to NATS JetStream using TLS client certificates." + metadata: + - name: natsURL + type: string + required: true + description: The NATS server URL. + example: "nats://localhost:4222" + - name: tls_client_cert + type: string + required: true + description: The TLS client certificate. + example: | + -----BEGIN CERTIFICATE----- + XXX + -----END CERTIFICATE----- + - name: tls_client_key + type: string + required: true + description: The TLS client private key. + example: | + -----BEGIN PRIVATE KEY----- + XXX + -----END PRIVATE KEY----- +metadata: + - name: name + type: string + required: false + description: The name of the JetStream connection. + example: "dapr-jetstream" + default: "dapr.io - pubsub.jetstream" + - name: streamName + type: string + required: false + description: The name of the JetStream stream. + example: "my-stream" + - name: durableName + type: string + required: false + description: The durable name for the consumer. + example: "my-durable" + - name: queueGroupName + type: string + required: false + description: The queue group name for load balancing. + example: "my-queue-group" + - name: startSequence + type: integer + required: false + description: The starting sequence number for message delivery. + example: 1 + - name: startTime + type: integer + required: false + description: The starting time (Unix timestamp) for message delivery. + example: 1640995200 + default: 0 + - name: flowControl + type: bool + required: false + description: Enable flow control for the consumer. + example: false + default: false + - name: ackWait + type: string + required: false + description: The acknowledgment wait time. + example: "30s" + - name: maxDeliver + type: integer + required: false + description: The maximum number of message deliveries. + example: 5 + - name: maxAckPending + type: integer + required: false + description: The maximum number of unacknowledged messages. + example: 100 + - name: replicas + type: integer + required: false + description: The number of stream replicas. + example: 3 + - name: memoryStorage + type: bool + required: false + description: Use memory storage for the stream. + example: false + default: false + - name: rateLimit + type: integer + required: false + description: The rate limit for message consumption. + example: 1000 + - name: heartbeat + type: string + required: false + description: The heartbeat interval. + example: "30s" + - name: deliverPolicy + type: string + required: true + description: The delivery policy (all, last, new, sequence, time). + example: "all" + allowedValues: + - "all" + - "last" + - "new" + - "sequence" + - "time" + - name: ackPolicy + type: string + required: false + description: The acknowledgment policy. + example: "explicit" + allowedValues: + - "explicit" + - "all" + - "none" + default: "explicit" + - name: domain + type: string + required: false + description: The JetStream domain. + example: "my-domain" + - name: apiPrefix + type: string + required: false + description: The API prefix for JetStream. + example: "$JS.API" + - name: concurrency + type: string + required: false + description: The concurrency mode (single, parallel). + example: "single" + default: "single" + - name: backOff + type: array + required: false + description: The backoff configuration for message delivery for the consumer. + example: "[1s, 2s, 4s]" + - name: maxAckPending + type: integer + required: false + description: The maximum number of unacknowledged messages for the consumer. + example: 100 diff --git a/pubsub/kubemq/metadata.yaml b/pubsub/kubemq/metadata.yaml new file mode 100644 index 0000000000..b4acab0ff7 --- /dev/null +++ b/pubsub/kubemq/metadata.yaml @@ -0,0 +1,47 @@ +# yaml-language-server: $schema=../../../component-metadata-schema.json +schemaVersion: v1 +type: pubsub +name: kubemq +version: v1 +status: beta +title: "KubeMQ" +urls: + - title: Reference + url: https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-kubemq/ +authenticationProfiles: + - title: "Token Authentication" + description: "Connect to KubeMQ using an authentication token." + metadata: + - name: authToken + type: string + required: true + description: The authentication token for KubeMQ. + example: "auth-token" +metadata: + - name: address + type: string + required: true + description: The KubeMQ server address in format host:port. + example: "localhost:50000" + - name: clientID + type: string + required: false + description: The client ID for the KubeMQ connection. + example: "dapr-client" + - name: group + type: string + required: false + description: The consumer group name. + example: "my-group" + - name: store + type: bool + required: false + description: Whether to use KubeMQ Event Store (true) or Events (false). + example: true + default: true + - name: disableReDelivery + type: bool + required: false + description: Disable message re-delivery on error. + example: false + default: false diff --git a/pubsub/rocketmq/metadata.go b/pubsub/rocketmq/metadata.go index a26d561bba..4817e01b9f 100644 --- a/pubsub/rocketmq/metadata.go +++ b/pubsub/rocketmq/metadata.go @@ -42,6 +42,9 @@ const ( DaprQueueSelector QueueSelectorType = "dapr" ) +// TODO: the time fields in the metadata need to be standardized on either seconds or milliseconds or minutes. +// Right now, it's a mix of all three. + // RocketMQ Go Client Options type rocketMQMetaData struct { // rocketmq instance name, it will be registered to the broker diff --git a/pubsub/rocketmq/metadata.yaml b/pubsub/rocketmq/metadata.yaml new file mode 100644 index 0000000000..3bf37eb6bd --- /dev/null +++ b/pubsub/rocketmq/metadata.yaml @@ -0,0 +1,202 @@ +# yaml-language-server: $schema=../../../component-metadata-schema.json +schemaVersion: v1 +type: pubsub +name: rocketmq +version: v1 +status: alpha +title: "RocketMQ" +urls: + - title: Reference + url: https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-rocketmq/ +authenticationProfiles: + - title: "Credential Authentication" + description: "Connect to RocketMQ using access key and secret key." + metadata: + - name: accessKey + type: string + required: true + description: The RocketMQ access key. + example: "access-key" + - name: secretKey + type: string + required: true + description: The RocketMQ secret key. + example: "secret-key" + - name: securityToken + type: string + required: false + description: The RocketMQ security token. + example: "security-token" +metadata: + - name: nameServer + type: string + required: false + description: The RocketMQ name server address. + example: "localhost:9876" + - name: instanceName + type: string + required: false + description: The RocketMQ instance name. + example: "dapr-rocketmq" + - name: producerGroup + type: string + required: false + description: The producer group name. + example: "dapr-producer-group" + - name: consumerGroup + type: string + required: false + description: The consumer group name. + example: "dapr-consumer-group" + - name: nameSpace + type: string + required: false + description: The RocketMQ namespace. + example: "my-namespace" + - name: nameServerDomain + type: string + required: false + description: The RocketMQ name server domain. + example: "rocketmq.example.com" + - name: retries + type: number + required: false + description: The number of retry attempts for sending messages. + example: 3 + default: 3 + - name: producerQueueSelector + type: string + required: false + description: The producer queue selector type. + example: "hash" + allowedValues: + - "hash" + - "random" + - "manual" + - "roundRobin" + - "dapr" + - name: consumerModel + type: string + required: false + description: The consumer model (clustering, broadcasting). + example: "clustering" + default: "clustering" + - name: fromWhere + type: string + required: false + description: The consumption starting point. + example: "ConsumeFromLastOffset" + allowedValues: + - "ConsumeFromLastOffset" + - "ConsumeFromFirstOffset" + - "ConsumeFromTimestamp" + - name: consumeTimestamp + type: string + required: false + description: The timestamp for consumption starting point. + example: "20220817101902" + - name: consumeOrderly + type: bool + required: false + description: Enable orderly message consumption. + example: false + default: false + - name: consumeMessageBatchMaxSize + type: number + required: false + description: The maximum batch size for message consumption. + example: 10 + - name: consumeConcurrentlyMaxSpan + type: number + required: false + description: The maximum span for concurrent consumption. + example: 10 + - name: maxReconsumeTimes + type: number + required: false + description: The maximum number of reconsume times. -1 means 16 times. + example: 10000 + - name: autoCommit + type: bool + required: false + description: Enable automatic commit. + example: true + default: false + - name: consumeTimeout + type: number + required: false + description: The consume timeout in minutes. + example: 10 + - name: consumerPullTimeout + type: number + required: false + description: The consumer pull timeout in milliseconds. + example: 30 + default: 30 + - name: pullInterval + type: number + required: false + description: The pull interval in minutes. + example: 100 + default: 100 + - name: consumerBatchSize + type: number + required: false + description: The consumer batch size. + example: 10 + - name: pullBatchSize + type: number + required: false + description: The pull batch size. + example: 10 + - name: pullThresholdForQueue + type: number + required: false + description: The pull threshold for queue. + example: 100 + - name: pullThresholdForTopic + type: number + required: false + description: The pull threshold for topic. + example: 100 + - name: pullThresholdSizeForQueue + type: number + required: false + description: The pull threshold size for queue. + example: 10 + - name: pullThresholdSizeForTopic + type: number + required: false + description: The pull threshold size for topic. + example: 10 + - name: content-type + type: string + required: false + description: The content type for messages. + example: "json" + - name: sendTimeOutSec + type: number + required: false + description: The send timeout in seconds. + example: 10 + - name: logLevel + type: string + required: false + description: The log level. + example: "warn" + default: "warn" + - name: mspProperties + type: string + required: false + description: The message properties to pass to the application (comma-separated). + example: "UNIQ_KEY,MSG_ID" + - name: groupName + type: string + required: false + description: The consumer group name (deprecated, use consumerGroup instead). + example: "dapr-consumer-group" + - name: sendTimeOut + type: number + required: false + description: The send timeout in nanoseconds (deprecated, use sendTimeOutSec instead). + example: 10000000000 diff --git a/pubsub/rocketmq/rocketmq.go b/pubsub/rocketmq/rocketmq.go index c7fcdece99..d1051a9ba6 100644 --- a/pubsub/rocketmq/rocketmq.go +++ b/pubsub/rocketmq/rocketmq.go @@ -121,6 +121,7 @@ func parseNameServer(nameServer string) []string { } } +// TODO: these metadata fields need to be reevaluated on required vs not. func (r *rocketMQ) setUpConsumer() (mq.PushConsumer, error) { opts := make([]mqc.Option, 0) if r.metadata.InstanceName != "" { @@ -243,6 +244,7 @@ func (r *rocketMQ) setUpConsumer() (mq.PushConsumer, error) { return c, e } +// TODO: these metadata fields need to be reevaluated on required vs not. func (r *rocketMQ) setUpProducer() (mq.Producer, error) { opts := make([]mqp.Option, 0) if r.metadata.InstanceName != "" {