2ème message non publié sur le serveur Discourse

J’essaie d’envoyer plus d’un message à mon serveur de forum Discourse en utilisant cette API :

Mon code 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();
}

Dans mon test ci-dessus, les deux messages ont été envoyés avec succès (il n’y a pas eu d’exception). Le problème est qu’après m’être connecté à mon compte Discourse, je n’ai vu que le premier message reçu, mais le deuxième message était manquant.

Plus tard, j’ai découvert que si je mettais un délai de 20 secondes entre eux (c’est-à-dire dans le commentaire), alors seulement les deux pouvaient être reçus par le serveur.

Qu’est-ce qui ne va pas ?

Ma version :

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

Salut @lenny1 – J’ai masqué des parties de votre publication car elles contenaient des informations sensibles. Veuillez ne pas publier de clés API ou de mots de passe, etc., publiquement.

2 « J'aime »

Vous atteignez peut-être une limite de débit. Si tel est le cas, Discourse devrait renvoyer une réponse 429. Il pourrait y avoir des informations dans vos journaux d’erreurs Discourse à ce sujet. Ils se trouvent dans Admin / Journaux / Journaux d’erreurs.

Si vous ne voyez aucune erreur là-bas, essayez d’enregistrer la réponse que Discourse envoie au serveur qui exécute votre code Java. Cela pourrait fournir des informations utiles.

3 « J'aime »

Selon le compte que vous utilisez pour publier les messages, vous pourriez rencontrer des limites de débit de création de sujet ou de création de message.

Je suis en train de travailler sur un script qui envoie 11 messages consécutivement (en environ une seconde) et cela fonctionne bien, mais ils sont envoyés par le compte système, qui pourrait ne pas avoir de limites de débit appliquées.

3 « J'aime »

Merci pour votre réponse.
Oui, j’ai reçu la réponse de Discourse comme suit :
« Vous créez des sujets un peu trop rapidement. Veuillez patienter 15 secondes avant de réessayer. »
J’ai résolu le problème en modifiant la limite de débit dans la page d’administration, en réglant la création de messages et de sujets sur 0.
Ma question est maintenant : est-il possible de définir la limite de débit pour un compte spécifique uniquement ?

Non, la limite de débit ne peut pas être définie pour un compte spécifique. Les paramètres rate limit create topic et rate limit create post ne s’appliquent cependant pas aux comptes du personnel. C’est peut-être utile pour votre cas d’utilisation.

2 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.