【问题标题】:MassTransit In memory setup for two different application running on same processMassTransit In memory setup 用于在同一进程上运行的两个不同应用程序
【发布时间】:2016-12-29 07:52:27
【问题描述】:

通过为两个应用程序中的每一个创建 AppDomain,我有两个不同的应用程序在同一进程上运行。 application1 的总线设置如下所示:

  builder.Register(c =>
            {
                var inMemoryTransportCache = new InMemoryTransportCache(Environment.ProcessorCount);
                var bus = Bus.Factory.CreateUsingInMemory( sbc =>
                {
                    sbc.SetTransportProvider(inMemoryTransportCache);
                });
                return bus.GetSendEndpoint(new Uri(busDestination)).Result;
            }).As<ISendEndpoint>();

application2 的总线设置如下所示:

builder.Register(c =>
            {
                var inMemoryTransportCache = new InMemoryTransportCache(Environment.ProcessorCount);
                var bus = Bus.Factory.CreateUsingInMemory(sbc =>
                {
                    sbc.ReceiveEndpoint("TestQueue", ce =>
                    {
                        ce.LoadFrom(c);
                    });
                    sbc.SetTransportProvider(inMemoryTransportCache);
                });

                return bus;
            })
                .As<IBusControl>()
                .As<IBus>()
                .SingleInstance();

            builder.Register(c => c.Resolve<IBusControl>().GetSendEndpoint(
                new Uri("destinationUrl")).Result)
                .As<ISendEndpoint>()
                .SingleInstance();

当我从应用程序 1 向应用程序 2 发送消息时,应用程序 2 没有收到它。

从 masstransit 文档来看,除了接收端点之外,我们在内存中运行时不需要指定任何其他内容。

我在设置中做错了吗?即在内存中运行时目标网址是否重要。 我是否还必须在 application2 中指定消费者?

任何帮助将不胜感激。(使用公共交通版本 3.4.1)

【问题讨论】:

    标签: masstransit


    【解决方案1】:

    单独的 AppDomain 具有单独的内存空间,因此无法共享相同的传输。因此,您不能使用 InMemoryTransport 进行 AppDomain 间通信。相信我,如果你能做到,那就太棒了,但你做不到。

    您为什么还要使用两个单独的 AppDomain?如果您可以将其折叠到单个域中,它将按预期工作。

    【讨论】:

    • 我们正在尝试在内存中运行验收测试。因此,我们使用规范流程的验收测试项目为每个应用程序(即 api 控制台主机、应用程序控制台主机)初始化不同的应用程序域,以便不同的应用程序可以在同一个进程上运行,从而使用内存总线只是为了端到端测试。
    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 2015-11-07
    • 2014-07-21
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多