В моём тесте выше оба сообщения были отправлены успешно (исключений не возникло). Проблема в том, что после входа в учётную запись Discourse я увидел только первое сообщение, а второе отсутствовало.
Позже я обнаружил, что если добавить задержку в 20 секунд между ними (как в закомментированной строке), то оба сообщения будут получены сервером.
Привет @lenny1 — я удалил части вашего сообщения, так как они содержали конфиденциальную информацию. Пожалуйста, не публикуйте публично API-ключи, пароли и т.п.
Возможно, вы упираетесь в ограничение скорости запросов. Если это причина, то Discourse должен возвращать ответ с кодом 429. В логах ошибок Discourse может быть дополнительная информация об этом. Они находятся в разделе Администрирование / Логи / Логи ошибок.
Если вы не видите там никаких ошибок, попробуйте логировать ответ, который Discourse отправляет серверу, на котором выполняется ваш Java-код. Это может дать полезную информацию.
В зависимости от того, с какого аккаунта вы публикуете сообщения, вы можете упереться в «лимит скорости создания темы» или «лимит скорости создания поста».
Я сейчас работаю над скриптом, который отправляет 11 постов подряд (в течение примерно секунды), и это работает нормально, но они отправляются от имени системного аккаунта, к которому, возможно, не применяются лимиты скорости.
Спасибо за ответ.
Да, я получил ответ от Discourse, вот что там было:
«Вы создаете темы слишком быстро. Пожалуйста, подождите 15 секунд перед повторной попыткой».
Я решил проблему, изменив лимит скорости на странице администратора, установив создание постов и тем на 0.
Теперь мой вопрос: можно ли установить лимит скорости только для конкретного аккаунта?
Нет, ограничение скорости нельзя установить для конкретного аккаунта. Однако настройки rate limit create topic и rate limit create post не применяются к аккаунтам сотрудников. Возможно, это поможет в вашем случае.