【问题标题】:Mixed transports in NServiceBus 4.0NServiceBus 4.0 中的混合传输
【发布时间】:2013-05-24 07:07:44
【问题描述】:

我目前正在开发一个结合 Java 和 .NET 系统的项目。两者之间的通信是从 Java 通过 ActiveMQ 到使用 BizTalk 作为翻译器的 .NET MSMQ。

我想知道我们是否可以在使用 NServiceBus 4.0 时删除 BizTalk,并在 1 个 NServiceBus 实例中使用 2 种不同的传输类型。应从 ActiveMQ 中获取传入事件并使用 MSMQ 发布。

本例中的 NServiceBus 实例自托管在 IIS 上的 WCF 服务中,并使用 Unity 容器注入到业务逻辑中。

这是否可行,还是我需要为每个实例/主机坚持一种传输类型?

【问题讨论】:

    标签: c# .net wcf nservicebus


    【解决方案1】:

    使用 NServiceBus 4.0 版,您可以在两端使用 ActiveMQ,同时切断 BizTalk 和 MSMQ。

    更新:

    您可以有一个常规的 NSB 端点监听 ActiveMQ,并让它调用 Bus.SendToSites,您可以在其中配置消息通过 MSMQ 发送到您的常规端点。

    【讨论】:

    • 现在切掉 MSMQ 并不是一个真正的选择,我正在研究从 c# 监视 ActiveMQ 队列并将来自该队列的消息发布到总线上的可能性。
    • 在这种情况下,我有现有的 Java 创建的消息放在我想使用 ActiveMQ 端点配置使用的队列中,而 Java 端不知道 NServiceBus 队列消耗。我只有一个 XSD 定义放入队列的消息格式。
    【解决方案2】:

    我们通过使用 NServiceBus 中的卫星解决了这个问题,该卫星使用 Apache.NMS 和 Apache.NMS.ActiveMQ 来使用现有的 ActiveMQ 队列并创建一条我们放在总线上的新消息。使用 NServiceBus 4.0 默认 MSMQ 传输,而不是混合传输来使用非 NServiceBus 托管的 ActiveMQ。

    【讨论】:

      【解决方案3】:

      每个端点有一个传输。只要是一种方式,您就可以将 NSB 端点公开为 Web 服务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-15
        • 2011-09-22
        相关资源
        最近更新 更多