我希望特定传奇故事的所有消息都发生在同一主题上。
我是这样设置我的传奇故事的:
public void ConfigureServices(IServiceCollection services)
{
services.AddMassTransit(x =>
{
var machine = new MyStateMachine();
var repository = new InMemorySagaRepository<MyState>();
x.UsingAzureServiceBus((ctx,cfg) => {
cfg.Host(config.ServiceBusConnectionString);
cfg.SubscriptionEndpoint("mySub", "myTopic", e =>
{
e.StateMachineSaga(machine, repository);
});
});
});
}
我在状态机中执行以下操作:
Initially(
When(FirstEvent)
.PublishAsync(context => context.Init<SecondMessage>(new { TestParam = "test"}))
.TransitionTo(FirstState));
我希望在主题‘myTheme’上发布Second Message,但MassTransport却为此邮件创建了一个新主题。
MassTransport为每个邮件类型创建一个主题,并将邮件发布到相应的主题。建议不要将同一主题名称分配给多个邮件类型。
如果您希望为SAGA使用订阅端点,则需要在每个事件的相应主题上配置SAGA。默认情况下,MassTransport会将每个SAGA事件的消息主题转发到接收终结点队列。
示例拓扑如下所示: