pub struct TransactionMiddleware;Expand description
事务中间件
在请求处理前从连接池 acquire 连接并 begin_transaction,将连接注入
request extensions 供 handler 复用;请求处理后根据 ServiceResponse
状态码 2xx 提交 / 否则回滚。
降级策略:若 app_data 中未注册 PoolState,或 acquire 失败,
或 begin_transaction 失败,则退化为透传请求(不开启事务),并在
日志中记录警告。这保证未启用事务的场景仍可正常处理请求。
§用法
ⓘ
use actix_web::{web, App};
use sz_orm_actix::{PoolState, TransactionMiddleware};
let app = App::new()
.app_data(web::Data::new(PoolState::new(pool)))
.wrap(TransactionMiddleware);Trait Implementations§
Source§impl<S, B> Transform<S, ServiceRequest> for TransactionMiddlewarewhere
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error> + 'static,
S::Future: 'static,
B: 'static,
impl<S, B> Transform<S, ServiceRequest> for TransactionMiddlewarewhere
S: Service<ServiceRequest, Response = ServiceResponse<B>, Error = Error> + 'static,
S::Future: 'static,
B: 'static,
Source§type Response = ServiceResponse<B>
type Response = ServiceResponse<B>
Responses produced by the service.
Source§type Transform = TransactionMiddlewareService<S>
type Transform = TransactionMiddlewareService<S>
The
TransformService value created by this factorySource§type Future = Ready<Result<<TransactionMiddleware as Transform<S, ServiceRequest>>::Transform, <TransactionMiddleware as Transform<S, ServiceRequest>>::InitError>>
type Future = Ready<Result<<TransactionMiddleware as Transform<S, ServiceRequest>>::Transform, <TransactionMiddleware as Transform<S, ServiceRequest>>::InitError>>
The future response value.
Source§fn new_transform(&self, service: S) -> Self::Future
fn new_transform(&self, service: S) -> Self::Future
Creates and returns a new Transform component, asynchronously
Auto Trait Implementations§
impl Freeze for TransactionMiddleware
impl RefUnwindSafe for TransactionMiddleware
impl Send for TransactionMiddleware
impl Sync for TransactionMiddleware
impl Unpin for TransactionMiddleware
impl UnsafeUnpin for TransactionMiddleware
impl UnwindSafe for TransactionMiddleware
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more