Search code examples
nats.iodapr

Couldn't find message bus pubsub.jetstream/v1 Dapr


I'm trying to connect dapr with nats with jetstream functionality enabled.

I want to start everything with docker-compose. Nats service is started and when I run nats-cli with command nats -s "nats://localhost:4222" server check jetstream, I get OK JetStream | memory=0B memory_pct=0%;75;90 storage=0B storage_pct=0%;75;90 streams=0 streams_pct=0% consumers=0 consumers_pct=0% indicating nats with jetstream is working ok.

Unfortunately, dapr returns first warning then error

warning: error creating pub sub %!s(*string=0xc0000ca020) (pubsub.jetstream/v1): couldn't find message bus pubsub.jetstream/v1" app_id=conversation-api1 instance=50b51af8e9a8 scope=dapr.runtime type=log ver=1.3.0

error: process component conversation-pubsub error: couldn't find message bus pubsub.jetstream/v1" app_id=conversation-api1 instance=50b51af8e9a8 scope=dapr.runtime type=log ver=1.3.0

I followed instructions on official site.

docker-compose.yaml

version: '3.4'

services:
  conversation-api1:
    image: ${DOCKER_REGISTRY-}conversationapi1
    build:
      context: .
      dockerfile: Conversation.Api1/Dockerfile
    ports:
      - "5010:80"

  conversation-api1-dapr:
    container_name: conversation-api1-dapr
    image: "daprio/daprd:latest"
    command: [ "./daprd", "--log-level", "debug", "-app-id", "conversation-api1", "-app-port", "80", "--components-path", "/components", "-config", "/configuration/conversation-config.yaml" ]    
    volumes:
      - "./dapr/components/:/components"
      - "./dapr/configuration/:/configuration"
    depends_on:
      - conversation-api1
      - redis
      - nats
    network_mode: "service:conversation-api1"

  nats:
    container_name: "Nats"
    image: nats
    command: [ "-js", "-m", "8222" ]
    ports:
      - "4222:4222"
      - "8222:8222"
      - "6222:6222"
# OTHER SERVICES...

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://host.docker.internal:4222" # already tried with nats for host
  - name: name
    value: "conversation"
  - name: durableName
    value: "conversation-durable"
  - name: queueGroupName
    value: "conversation-group"
  - name: startSequence
    value: 1
  - name: startTime # in Unix format
    value: 1630349391
  - name: deliverAll
    value: false
  - name: flowControl
    value: false

conversation-config.yaml

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: config
  namespace: default
spec:
  tracing:
    samplingRate: "1"
    zipkin:
      endpointAddress: "http://zipkin:9411/api/v2/spans"

Solution

  • The problem was in old Dapr version. I used version 1.3.0, Jetstream support is introduced in 1.4.0+. Pulling latest version of daprio/daprd fixed my problem. Also no need for nats://host.docker.internal:4222, nats://nats:4222 works as expected.