MassTransit/RabbitMQ와 Unity를 사용하고 있습니다. 각 소비자가 하나의 메시지를 두 번 받았다는 것을 알았습니다. 나는 other posts을 보았는데, 다른 사람들이이 이슈를 설명하고있다. 나는 무엇이 명확하게 원인인지 구체적으로 밝힙니다. 그러나 모든 손가락은 MT의 SubScriptionBusConfigurator.LoadFrom (IUnityContainer 컨테이너) 메소드를 가리키는 것처럼 보입니다.MassTransit & Unity - 중복 메시지가 소비자에게 전송되는 것을 피하려면 어떻게해야합니까?
나는 그렇게처럼 내 유니티 컨테이너에 여러 소비자를 등록하고 :
:public class ConsumerA : Consumes<SomeMessage>.All
{
public void Consume(SomeMessage message)
{
...
}
}
내 서비스 버스 등록은 다음과 같습니다
container.RegisterType<ConsumerA>();
container.RegisterType<ConsumerB>();
container.RegisterType<ConsumerC>();
내 소비자
모두 같은 메시지를 듣고container.RegisterType<IServiceBus>(new ContainerControlledLifetimeManager(), new InjectionFactory(x => ServiceBusFactory.New(sbc =>
{
sbc.ReceiveFrom("rabbitmq://localhost/service_bus");
sbc.UseRabbitMq();
sbc.UseNLog();
sbc.Subscribe(s => s.LoadFrom(container));
sbc.Subscribe(s => s.Handler<IFault>((context, message) =>
_logger.Error(string.Format("ServiceBus Fault: {0}", message.FaultType))));
})));
주위를 둘러 본 후 내 구독이 문제가되는 것처럼 보입니다.
sbc.Subscribe(s => s.LoadFrom(container));
그렇다면 소비자를 등록하여 각 소비자에게 메시지를 두 번 보내지 않는 것은 무엇입니까?
감사합니다 !!!
LOL. 고마워요! – Nick
AutoFact 및 AsSelf()에서 동일한 문제가 발생합니다. AsImplementedInterfaces() 시스템에서 메시지가 두 번 표시됩니다. – Miguel