我正在尝试使用MassTransit(与Azure ServiceBus进行连接)来连接两个进程,但是还允许从本地环境开发这些服务中的任何一个,而将路由路由到该本地环境。
因此,非开发数据流将是:
- ServiceA(在EnvironmentA中)将EventA发送到ServiceB(在EnvironmentA中)
- ServiceB(在EnvironmentA中)将事件B发送到ServiceA(在EnvironmentA中)
然后,当开发人员要在ServiceA上进行调试时,数据流将更改为:
- ServiceA(在 EnvironmentB 中)将事件A发送到ServiceB(在EnvironmentA中)
- ServiceB(在EnvironmentA中)将EventB发送到ServiceA(在 EnvironmentB 中)
有很多设置方法,但是我假设有人已经解决了这个问题。
例如,您可以拥有两个Subscription,而不是拥有一个Subscription,一个针对每个环境,每个都有一个Subscription Rule,该Subscription Rule在“ To”属性中查找特定值。 ServiceA发送消息时,将在消息中指定“ ReplyTo”属性,然后ServiceB监视“ ReplyTo”并将其放入返回消息的“ To”属性中。
但是,我不知道如何从MassTransit设置此订阅规则。
- ServiceA(在EnvironmentB中)将EventA(,带有“ ReplyTo = EnvironmentB” )发送到ServiceB(在EnvironmentA中)
- ServiceB(在EnvironmentA中)将事件B(带有“ To = EnvironmentB” )发送到ServiceA(在EnvironmentB中)