Pulsar: проверка ошибок / получение метаданных раздела при подписке на persistent: // public / default / test

В настоящее время у меня есть файл docker-compose.yml, который вызывает ряд служб. Один из этих сервисов - это pulsar, а другой - это веб-сервер, к которому можно подключиться через веб-сокет. Когда я вызываю эти службы, контейнер websocket не работает. Журналы говорят: Error Checking/Getting Partition Metadata while Subscribing on persistent://public/default/test. Я не использую разделы, поэтому мне сложно это понять.

Я много гуглил до сих пор и нашел это вопрос, на который нет ответов, но похоже на мою проблему.

Это мой docker-compose.yml файл:

version: '3.2'

services:
  pulsar:
    image: apachepulsar/pulsar:latest
    command: bin/pulsar standalone
    ports:
      - "6650"
      - "8080"

  ios_pos_ws_input:
    depends_on:
      - pulsar
    environment:
      - PULSAR_HOST=pulsar
    image: dock.gastrofix.com/bridge/ios_pos_ws_input:${VERSION:-latest}
    restart: always
    ports:
      - "8765"
    command: python3 -m wait_for_pulsar "python3 -m inputs.ios_pos.web_sockets.ws_server"

  ios_pos_ws_sink:
    depends_on:
      - pulsar
    environment:
      - PULSAR_HOST=pulsar
    image: dock.gastrofix.com/bridge/ios_pos_ws_sink:${VERSION:-latest}
    restart: always
    ports:
      - "8765"
    command: python3 -m wait_for_pulsar "python3 -m sinks.ios_pos_ws"

volumes:
  pulsar:

и когда я проверяю журналы ios_pos_ws_input и ios_pos_ws_sink, я вижу следующее:

2019-05-15 14:12:52.809 INFO  ClientConnection:300 | [172.28.0.5:53624 -> 172.28.0.2:6650] Connected to broker
2019-05-15 14:12:52.920 ERROR ClientConnection:726 | [172.28.0.5:53624 -> 172.28.0.2:6650] Failed partition-metadata lookup req_id: 1 error: 1
2019-05-15 14:12:52.920 ERROR ClientImpl:394 | Error Checking/Getting Partition Metadata while Subscribing on persistent://public/default/test -- 5
2019-05-15 14:12:52.921 INFO  ClientImpl:492 | Closing Pulsar client
2019-05-15 14:12:54.922 INFO  Client:88 | Subscribing on Topic :test
2019-05-15 14:12:54.923 INFO  ConnectionPool:72 | Created connection for pulsar://pulsar:6650

Я действительно хотел бы в этом разобраться. Я заранее ценю любую помощь!


person Jordan Gillard    schedule 15.05.2019    source источник


Ответы (1)


Похоже, что пространство имен public/default еще не создано, когда клиент пытается его использовать.

Я попытался с помощью этого простого файла компоновки установить большую задержку, чтобы автономная служба была полностью готова к запуску клиента:

version: '3.2'

services:
  pulsar:
    image: apachepulsar/pulsar:latest
    command: bin/pulsar standalone
    ports:
      - "6650"
      - "8080"

  client:
    depends_on:
      - pulsar
    image: apachepulsar/pulsar:latest
    command: python -c "import pulsar, time; time.sleep(30); c = pulsar.Client('pulsar://pulsar:6650'); p = c.create_producer('my-topic')"

person Matteo Merli    schedule 15.05.2019
comment
Вы совершенно прав, Маттео! Службы пытались получить доступ к Pulsar до того, как Pulsar был запущен. Спасибо за помощь! - person Jordan Gillard; 16.05.2019