Dapr对接启用JetStream的NATS时提示找不到pubsub.jetstream/v1报错
错误原因
- 核心问题为Dapr runtime版本不匹配:从报错日志可见你使用的是Dapr 1.3.0,而NATS JetStream Pub/Sub组件是Dapr 1.4.0版本才正式加入官方支持组件列表的,1.3.0版本的daprd本身不自带
pubsub.jetstream/v1这个组件实现,所以会抛出找不到对应消息总线组件的错误。 - 次要配置问题:你当前的JetStream组件配置里同时填写了
startSequence、startTime、deliverAll三个互斥的消费起始位置参数,后续调整版本后也需要修正该配置,仅可保留其中一个参数。
解决方案
步骤1:升级Dapr runtime版本
将docker-compose中daprd的镜像版本调整为1.4.0及以上的稳定版本,示例配置如下:
image: "daprio/daprd:1.12.0" # 可替换为任意≥1.4.0的稳定版本
若你本地开发环境也安装了Dapr CLI,需要同步升级CLI版本到对应范围,避免版本不兼容问题。
步骤2:修正JetStream组件配置
删除互斥的消费起始参数,仅保留你需要的配置项,同docker-compose网络内的服务可以直接用NATS服务名作为访问域名,修正后的conversation-pubsub.yaml参考:
apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: conversation-pubsub namespace: default spec: type: pubsub.jetstream version: v1 metadata: - name: natsURL value: "nats://nats:4222" - name: name value: "conversation" - name: durableName value: "conversation-durable" - name: queueGroupName value: "conversation-group" - name: deliverAll value: false - name: flowControl value: false
步骤3:重启服务生效
重新执行docker-compose up -d启动所有服务即可,此时Dapr可正常加载JetStream组件完成对接。
内容的提问来源于stack exchange,提问作者Alan Jagar
相关产品推荐
相关产品推荐

