Rebus - Rabbitmq 映射指定 namespace/assembly 中的所有对象
Rebus - Rabbitmq map all the objects in specified namespace/assembly
在我的应用程序中,我使用 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。
我可以在 Routing(..) 中指定 namespace/assembly 吗?以便映射该名称空间下的所有 objects/dtos?
其他类如下
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 发布会将事件消息的副本分发给订阅的任何人。
因此,要接收 TestClass
的已发布实例,您的订阅者只需
await bus.Subscribe<TestClass>();
这将在 RabbitMQ 中创建必要的绑定,以便将所有已发布的该类型事件分发给订阅者。
我鼓励您转到 RabbitMQ 的管理控制台(通常托管在 http://<rabbitmq-hostname>:15672
上)并查看拓扑结构 before/after 订阅。
在我的应用程序中,我使用 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。 我可以在 Routing(..) 中指定 namespace/assembly 吗?以便映射该名称空间下的所有 objects/dtos? 其他类如下
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 发布会将事件消息的副本分发给订阅的任何人。
因此,要接收 TestClass
的已发布实例,您的订阅者只需
await bus.Subscribe<TestClass>();
这将在 RabbitMQ 中创建必要的绑定,以便将所有已发布的该类型事件分发给订阅者。
我鼓励您转到 RabbitMQ 的管理控制台(通常托管在 http://<rabbitmq-hostname>:15672
上)并查看拓扑结构 before/after 订阅。