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