(외부) timeoutservice를 사용하여 Rebus를 시험 중입니다.Reble을 autofac으로 구성한 TimeoutReply 메시지 처리
TimeoutService가 TimeoutReply를 올바르게 되돌려 보냅니다. 그러면 구독자는 TimeoutReplyHandler를 호출 할 수 없다는 오류를 기록합니다.
I는 핸들러를 등록 의존성 주입 Autofac을 사용하여 다음과 같은 구성을 사용하고있어 :
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies())
.Where(t => t.GetInterfaces().Any(i => i.IsAssignableFrom(typeof(IHandleMessages))))
.AsImplementedInterfaces()
.InstancePerDependency()
.PropertiesAutowired();
var container = builder.Build();
adapter = new AutofacContainerAdapter(container);
다음의 예외가 발생된다 :
Autofac.Core.DependencyResolutionException 다음 사항 없음 생성자 에서 '공용 바인딩 플래그'를 사용하는 서비스와 매개 변수를 사용하여 'Rebus.Bus.TimeoutReplyHandler'를 호출 할 수 있습니다. 'Rebus.Bus.IHandleDeferredMessage handleDeferredMessage'가 생성자 'Void .ctor (Rebus.Bus.IHandleDeferredMessage)'입니다. Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance에서 Autofac.Core.Resolving.InstanceLookup.Execute()
에서 (IC를 IEnumerable omponentContext 컨텍스트 파라미터)에 Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance (ISharingLifeti meScope currentOperationScope, IComponentRegistration 등록, IEnumerable` 1 파라미터)
TimeoutReply가 ctor에에서 IHandleDeferredMessage 필요 내부 클래스 TimeoutReplyHandler에 의해 처리된다. 내부 클래스 DeferredMessageReDispatcher는 IHandleDeferredMessage를 구현하며 ctor에 IBus가 필요합니다. IHandleDeferredMessage는 내부 범위입니다.
어떻게 TimeoutReply를 처리하도록 autofac 컨테이너를 구성해야합니까? 이 컨테이너 : 난 당신이 구하기가 발생하는 일부 Autofac 조립 검사를 추측하고
에 있어야되지 않는다 - TimeoutReply
들어오는 처리 할 필요가있을 때
그게 전부 였어! 이제 내부 및 외부 TimeoutService와 함께 잘 작동합니다. 그리고 MSMQ와 SQL 전송. –