feat: Add support for a redis pubsub interface (#614)

Co-authored-by: Sanchith Hegde <22217505+SanchithHegde@users.noreply.github.com>
This commit is contained in:
Kartikeya Hegde
2023-02-23 18:04:19 +05:30
committed by GitHub
parent 8ee097ea21
commit aaf372505c
7 changed files with 103 additions and 3 deletions

View File

@ -6,13 +6,15 @@ pub mod logger;
use std::sync::{atomic, Arc};
use redis_interface::errors::RedisError;
use redis_interface::{errors::RedisError, PubSubInterface};
pub use self::api::*;
#[cfg(feature = "basilisk")]
pub use self::encryption::*;
use crate::{
async_spawn,
connection::{diesel_make_pg_pool, PgPool},
consts,
core::errors,
};
@ -38,7 +40,17 @@ impl Store {
let redis_conn = Arc::new(crate::connection::redis_connection(config).await);
let redis_clone = redis_conn.clone();
tokio::spawn(async move {
let subscriber_conn = redis_conn.clone();
redis_conn.subscribe(consts::PUB_SUB_CHANNEL).await.ok();
async_spawn!({
if let Err(e) = subscriber_conn.on_message().await {
logger::error!(pubsub_err=?e);
}
});
async_spawn!({
redis_clone.on_error().await;
});