在Azure ServiceBus上使用MassTransport时如何在传奇中使用指定主题 [英] How to use a specified topic in a saga when using MassTransit on Azure ServiceBus
本文介绍了在Azure ServiceBus上使用MassTransport时如何在传奇中使用指定主题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望特定传奇故事的所有消息都发生在同一主题上。
我是这样设置我的传奇故事的:
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事件的消息主题转发到接收终结点队列。
示例拓扑如下所示:
这篇关于在Azure ServiceBus上使用MassTransport时如何在传奇中使用指定主题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文