Segundo mensaje no publicado en el servidor Discourse

Estoy intentando enviar más de un mensaje a mi servidor de foro de Discourse usando esta API:

Mis códigos de 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();

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

En mi prueba anterior, ambos mensajes se enviaron con éxito (no hubo ninguna excepción). El problema es que después de iniciar sesión en mi cuenta de Discourse, solo vi que se recibió el primer mensaje, pero faltaba el segundo.

Más tarde, descubrí que si pongo un retraso de 20 segundos entre ellos (es decir, en el comentario), entonces ambos pueden ser recibidos por el servidor.

¿Qué está mal?

Mi versión:

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

Hola @lenny1 – He redactado partes de tu publicación porque contenían información confidencial. Por favor, no publiques claves de API, contraseñas, etc. públicamente.

2 Me gusta

Podrías estar alcanzando un límite de tasa. Si esa es la causa, Discourse debería devolver una respuesta 429. Puede que haya alguna información en los registros de errores de Discourse al respecto. Se encuentran en Admin / Logs / Error Logs.

Si no ves ningún error allí, intenta registrar la respuesta que Discourse envía al servidor que ejecuta tu código Java. Eso podría dar información útil.

3 Me gusta

Dependiendo de la cuenta que estés utilizando para publicar los mensajes, podrías estar alcanzando el ‘límite de tasa de creación de tema’ o el ‘límite de tasa de creación de publicación’.

Estoy trabajando en un script que envía 11 publicaciones consecutivamente (en aproximadamente un segundo) y eso está funcionando bien, pero están siendo enviadas por la cuenta del sistema, a la que es posible que no se le apliquen límites de tasa.

3 Me gusta

Gracias por la respuesta.
Sí, recibí la siguiente respuesta de Discourse:
“Estás creando temas demasiado rápido. Por favor, espera 15 segundos antes de intentarlo de nuevo”.
Resolví el problema cambiando el límite de velocidad en la página de administración, estableciendo la creación de publicaciones y temas en 0.
Ahora mi pregunta es, ¿es posible establecer el límite de velocidad solo para una cuenta específica?

No, el límite de velocidad no se puede establecer para una cuenta específica. Sin embargo, la configuración rate limit create topic y rate limit create post no se aplica a las cuentas del personal. Posiblemente eso podría ayudar en tu caso de uso.

2 Me gusta

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