mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: send webhook events in the background
parent
1e03af3ea3
commit
5c4b9c7997
|
@ -17,11 +17,6 @@
|
|||
|
||||
package io.openvidu.server.webhook;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import io.openvidu.server.cdr.CDREvent;
|
||||
import io.openvidu.server.cdr.CDRLogger;
|
||||
import io.openvidu.server.config.OpenviduConfig;
|
||||
|
@ -30,8 +25,6 @@ import io.openvidu.server.summary.SessionSummary;
|
|||
|
||||
public class CDRLoggerWebhook implements CDRLogger {
|
||||
|
||||
private Logger log = LoggerFactory.getLogger(CDRLoggerWebhook.class);
|
||||
|
||||
private HttpWebhookSender webhookSender;
|
||||
|
||||
public CDRLoggerWebhook(OpenviduConfig openviduConfig) {
|
||||
|
@ -41,11 +34,7 @@ public class CDRLoggerWebhook implements CDRLogger {
|
|||
|
||||
@Override
|
||||
public void log(CDREvent event) {
|
||||
try {
|
||||
this.webhookSender.sendHttpPostCallback(event);
|
||||
} catch (IOException e) {
|
||||
log.error("Error sending webhook event: {}", e.getMessage());
|
||||
}
|
||||
this.webhookSender.sendHttpPostCallbackAsync(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -26,6 +26,8 @@ import java.security.cert.CertificateException;
|
|||
import java.security.cert.X509Certificate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
|
@ -61,6 +63,8 @@ public class HttpWebhookSender {
|
|||
private List<Header> customHeaders;
|
||||
private List<CDREventName> events;
|
||||
|
||||
private ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
|
||||
|
||||
public HttpWebhookSender(String httpEndpoint, List<Header> headers, List<CDREventName> events) {
|
||||
this.httpEndpoint = httpEndpoint;
|
||||
this.events = events;
|
||||
|
@ -102,12 +106,22 @@ public class HttpWebhookSender {
|
|||
.setSSLContext(sslContext).build();
|
||||
}
|
||||
|
||||
public void sendHttpPostCallbackAsync(CDREvent event) {
|
||||
executor.execute(() -> {
|
||||
try {
|
||||
this.sendHttpPostCallbackBlocking(event);
|
||||
} catch (IOException e) {
|
||||
log.error("Error sending webhook event: {}", e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws IOException If: A) The HTTP connection cannot be established to the
|
||||
* endpoint B) The response received from the endpoint is
|
||||
* not 200
|
||||
*/
|
||||
public void sendHttpPostCallback(CDREvent event) throws IOException {
|
||||
public void sendHttpPostCallbackBlocking(CDREvent event) throws IOException {
|
||||
|
||||
if (!this.events.contains(event.getEventName())) {
|
||||
return;
|
||||
|
|
Loading…
Reference in New Issue