두 번째 메시지가 Discourse 서버에 게시되지 않음

Discourse 포럼 서버에 이 API를 사용하여 메시지 2개 이상을 보내려고 합니다:

제 Java 코드:

public void test() 
		throws UnirestException, JsonMappingException, JsonProcessingException, InterruptedException {
	
	Unirest.config().cookieSpec(CookieSpecs.IGNORE_COOKIES);
	
	Map<String, String> header = new HashMap<>();
	header.put("Content-Type", "application/json");
	header.put("Api-Key", [redacted]);
	header.put("Api-Username", [redacted]);	    
    header.put("Accept", "application/json");

	
	Unirest.post(URL + "/posts.json")
			.headers(header)
			.queryString("title","1st Msg")
			.queryString("raw", "Message 1")
			.queryString("target_recipients", "Kenny")
			.queryString("archetype", "private_message")
			.asJson();

	
   // TimeUnit.SECONDS.sleep(20);
	
	
	Unirest.post(URL + "/posts.json")
			.headers(header)
			.queryString("title","2nd Msg")
			.queryString("raw", "Message 2")
			.queryString("target_recipients", "Kenny")
			.queryString("archetype", "private_message")
			.asJson();
}

위 테스트에서 두 메시지 모두 성공적으로 전송되었습니다(예외가 발생하지 않았습니다). 문제는 Discourse 계정으로 로그인한 후 1번째 메시지만 수신되고 2번째 메시지가 사라져 있는 것을 발견했습니다.

나중에 두 요청 사이에 20초의 지연(즉, 주석 처리된 부분)을 넣으면 서버가 두 메시지 모두를 수신할 수 있음을 알게 되었습니다.

무엇이 잘못된 것일까요?

사용 중인 버전:

  • Discourse 3.1.0.beta2
  • Java 11
  • unirest-java 3.14.2

안녕하세요, @lenny1 – 게시글 중 민감한 정보가 포함된 부분을 삭제했습니다. API 키나 비밀번호 등을 공개적으로 게시하지 마세요.

요청 제한(rate limit)에 도달하고 있을 수 있습니다. 이것이 원인이라면 Discourse가 429 응답을 반환해야 합니다. 이 문제에 대한 정보가 Discourse 오류 로그에 있을 수 있습니다. 로그는 관리자 / 로그 / 오류 로그(Admin / Logs / Error Logs)에서 찾을 수 있습니다.

거기서 오류가 표시되지 않는다면, Java 코드를 실행 중인 서버가 Discourse에서 받은 응답을 로깅해 보세요. 유용한 정보를 얻을 수 있을 것입니다.

메시지를 게시하는 데 사용하는 계정에 따라 ‘rate limit create topic’ 또는 ‘rate limit create post’ 오류가 발생할 수 있습니다.

저는 약 1초 이내에 11개의 게시물을 연속으로 전송하는 스크립트를 작성하고 있으며, 이는 정상적으로 작동하고 있습니다. 다만, 시스템 계정에서 전송되고 있어 해당 계정에는 속도 제한이 적용되지 않을 수 있습니다.

답변 감사합니다.
네, Discourse에서 다음과 같은 응답을 받았습니다:
“주제를 너무 빠르게 생성하고 있습니다. 다시 시도하기 전에 15초를 기다려 주세요.”
관리자 페이지에서 속도 제한을 변경하여 게시물 및 주제 생성 제한을 0으로 설정함으로써 문제를 해결했습니다.
이제 제 질문은 특정 계정에만 속도 제한을 설정할 수 있는지 여부입니다.

아니요, 특정 계정에 속도 제한을 설정할 수 없습니다. 다만 rate limit create topic 및 rate limit create post 설정은 스태프 계정에는 적용되지 않습니다. 이것이 사용 사례에 도움이 될 수 있습니다.