首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(MultiBus社交网站Masstransit)我如何将消息发布到另一辆公共汽车上?

(MultiBus社交网站Masstransit)我如何将消息发布到另一辆公共汽车上?
EN

Stack Overflow用户
提问于 2022-01-07 11:20:30
回答 1查看 232关注 0票数 0

来自Is it possible to have a MassTransit Saga react to events that come from more that one bus (multibus)?

我试着用佐贺和多路巴士。但当我把ISecondBus注射到佐贺。有些地方不对劲。我的程序卡住了。

代码语言:javascript
复制
public class TestSaga : MassTransitStateMachine<TestState>
    {
        public TestSaga(ISecondBus secondBus)
        {
            if (secondBus is null)
            {
                throw new ArgumentNullException(nameof(secondBus));
            }
        }    
    }

program.cs

代码语言:javascript
复制
        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);
                });
            }));
        });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-07 14:07:55

不能将运行时依赖项注入saga状态机。如果您想从状态机发布到另一个总线,则需要创建一个自定义活动并从状态机行为中调用该活动。

https://masstransit-project.com/usage/sagas/automatonymous.html#custom

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70620468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档