내 응용 프로그램에서 Rabbitmq로 Producer를 구성하고 있습니다. 내 구성은 다음과 같습니다.
using (var adapter = new BuiltinHandlerActivator())
{
Configure.With(adapter)
.Logging(l => l.ColoredConsole(LogLevel.Warn))
.Transport(t => t.UseRabbitMqAsOneWayClient(connection))
.Routing(r => r.TypeBased().MapAssemblyOf<TestClass>(queueName))
.Start();
await adapter.Bus.Publish(new TestClass() { Name = "TestName123" });
}
TestClass처럼 매핑하고 싶은 다른 Dto가 많이 있습니다. 라우팅 (..)에서 네임 스페이스 / 어셈블리를 지정할 수 있습니까? 그러면 해당 네임 스페이스 아래의 모든 개체 / dto가 매핑됩니까? 다른 클래스는 다음과 같습니다.
public class TestClass
{
public String Name { get; set; }
public String Date { get; set; }
}
public class NewTest
{
public string Name { get; set; }
}
다른 쪽에서는 WindsorContainer를 사용하고 있으며 다음과 같습니다.
public class Handle : IHandleMessages<TestClass>,IHandleMessages<NewTest>
{
Task IHandleMessages<TestClass>.Handle(TestClass message)
{
return null;
}
Task IHandleMessages<NewTest>.Handle(NewTest message)
{
return null;
}
}
때를
await bus.Publish(new TestClass(...));
Rebus로 PUBLISHING은 구독 한 모든 사람에게 이벤트 메시지 사본을 배포하므로 매핑 할 필요가 없습니다.
따라서의 게시 된 인스턴스를 받으려면 TestClass
구독자가
await bus.Subscribe<TestClass>();
이렇게하면 RabbitMQ에 필요한 바인딩이 생성되어 해당 유형의 게시 된 모든 이벤트가 구독자에게 배포됩니다.
RabbitMQ의 관리 콘솔 (일반적으로에서 호스팅 됨 http://<rabbitmq-hostname>:15672
) 로 이동하여 구독 전 / 후 토폴로지가 어떻게 보이는지 확인하는 것이 좋습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다