代码之家  ›  专栏  ›  技术社区  ›  Double M

SAGA关联失败,因为作用域未处于活动状态

  •  0
  • Double M  · 技术社区  · 6 年前

    如上所述 in the docs ,我将SAGA对象与特定的事件属性关联。这个 SagaLifecycle.associateWith 方法是从开始的SAGA事件处理程序方法中调用的:

    @StartSaga
    @SagaEventHandler(associationProperty = "orderId")
    public void handle(OrderCreatedEvent event) {
        // ...
        SagaLifecycle.associateWith("shipmentId", shipmentId); //fails
        // ...
    }
    

    但是,调用失败,因为没有活动的作用域。我在文档中没有看到任何指示,指示我激活作用域。有什么线索吗?

    java.lang.IllegalStateException: Cannot request current Scope if none is active
        at org.axonframework.messaging.Scope.getCurrentScope(Scope.java:57) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.modelling.saga.SagaLifecycle.getInstance(SagaLifecycle.java:118) ~[axon-modelling-4.0.jar:4.0]
        at org.axonframework.modelling.saga.SagaLifecycle.associateWith(SagaLifecycle.java:57) ~[axon-modelling-4.0.jar:4.0]
        at org.axonframework.modelling.saga.SagaLifecycle.associateWith(SagaLifecycle.java:35) ~[axon-modelling-4.0.jar:4.0]
        at com.example.sagas.OrderSaga.handle(OrderSaga.java:56) ~[classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_191]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_191]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_191]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_191]
        at org.axonframework.messaging.annotation.AnnotatedMessageHandlingMember.handle(AnnotatedMessageHandlingMember.java:127) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.modelling.saga.SagaMethodMessageHandlingMember.handle(SagaMethodMessageHandlingMember.java:80) ~[axon-modelling-4.0.jar:4.0]
        at org.axonframework.eventhandling.AnnotationEventHandlerAdapter.handle(AnnotationEventHandlerAdapter.java:81) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.SimpleEventHandlerInvoker.handle(SimpleEventHandlerInvoker.java:111) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.MultiEventHandlerInvoker.handle(MultiEventHandlerInvoker.java:79) [axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.AbstractEventProcessor.lambda$null$1(AbstractEventProcessor.java:141) [axon-messaging-4.0.jar:4.0]
        at org.axonframework.messaging.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:57) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.messaging.interceptors.CorrelationDataInterceptor.handle(CorrelationDataInterceptor.java:65) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.messaging.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:55) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.TrackingEventProcessor.lambda$new$1(TrackingEventProcessor.java:132) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.messaging.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:55) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.AbstractEventProcessor.lambda$processInUnitOfWork$2(AbstractEventProcessor.java:148) [axon-messaging-4.0.jar:4.0]
        at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.executeWithResult(BatchingUnitOfWork.java:86) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.AbstractEventProcessor.processInUnitOfWork(AbstractEventProcessor.java:136) [axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.TrackingEventProcessor.processBatch(TrackingEventProcessor.java:258) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.TrackingEventProcessor.processingLoop(TrackingEventProcessor.java:181) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.TrackingEventProcessor$TrackingSegmentWorker.run(TrackingEventProcessor.java:661) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.TrackingEventProcessor$WorkerLauncher.run(TrackingEventProcessor.java:771) ~[axon-messaging-4.0.jar:4.0]
        at org.axonframework.eventhandling.TrackingEventProcessor$CountingRunnable.run(TrackingEventProcessor.java:588) ~[axon-messaging-4.0.jar:4.0]
        at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_191]
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Double M    6 年前

    这个故事需要加上注释 @Saga 在施普灵河。