我试着用佐贺和多路巴士。但当我把ISecondBus注射到佐贺。有些地方不对劲。我的程序卡住了。
public class TestSaga : MassTransitStateMachine<TestState>
{
public TestSaga(ISecondBus secondBus)
{
if (secondBus is null)
{
throw new ArgumentNullException(nameof(secondBus));
}
}
}program.cs
services.AddMassTransit(x =>
{
x.AddSagaStateMachine<TestSaga, TestState>()
.RedisRepository(redisCfg =>
{
redisCfg.DatabaseConfiguration("127.0.0.1:6379,password=");
});
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host("rabbitmq://127.0.0.1:5672/A", hostConfig =>
{
hostConfig.Username("xxxx");
hostConfig.Password("xxxx");
});
cfg.ReceiveEndpoint("some-queue", e =>
{
e.PrefetchCount = 1;
e.UseInMemoryOutbox();
e.ConfigureSaga<TestState>(provider);
});
}));
});
services.AddMassTransit<ISecondBus>(x =>
{
x.AddSagaStateMachine<TestSaga, TestState>()
.RedisRepository(redisCfg =>
{
redisCfg.DatabaseConfiguration("127.0.0.1:6379,password=");
});
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host("rabbitmq://127.0.0.1:5672/B", hostConfig =>
{
hostConfig.Username("xxx");
hostConfig.Password("xxx");
});
cfg.ReceiveEndpoint("some-queue", e =>
{
e.PrefetchCount = 1;
e.UseInMemoryOutbox();
e.ConfigureSaga<TestState>(provider);
});
}));
});发布于 2022-01-07 14:07:55
不能将运行时依赖项注入saga状态机。如果您想从状态机发布到另一个总线,则需要创建一个自定义活动并从状态机行为中调用该活动。
https://masstransit-project.com/usage/sagas/automatonymous.html#custom
https://stackoverflow.com/questions/70620468
复制相似问题