小编Bor*_*dez的帖子

轨道交通。使用不同命名空间中定义的相同对象

首先,请原谅我的英语,非常糟糕。我将 MassTransit 与 Azure 服务总线一起用于微服务之间的异步通信。根据它们自己的定义,为了避免它们之间产生依赖关系,不同微服务之间发送的消息被定义在每个微服务中,即它们是不同命名空间的一部分。MassTransit 的自动管理导致队列和主题按对象类型进行管理,从而阻止消费消息的微服务接收微服务发布者发送的消息。同样的事情发生在同一个命名空间中具有相同属性但具有不同类名的两个类。

有没有办法解决这个问题?我想到的选项是:

  • 从目标地址的端点删除命名空间,仅使用类的名称命名。
  • MassTransit 可以根据对象的序列化来管理队列和主题的创建,而不是根据对象类型来管理它(也许通过某种类型的包装对象?)

我留下一个例子,希望可以帮助您理解问题。

//FIRST PROGRAM - MESSAGE CONSUMER 

namespace Consumer
{
    public class Example
    {
        public string PropOne { get; set; }

        public string PropTwo { get; set; }
    }

    public class ExampleConsumer : 
        IConsumer<Example>
    {
        public List<Example> ConsumedTestObjectList { get; } = new List<Example>();

        //THIS METHOD NEVER CALL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        public Task Consume(ConsumeContext<ExampleConsumer> context)
        {
            ConsumedTestObjectList.Add(context.Message);
            return Task.CompletedTask;
        }
    }

    public class ConsumerProgram
    {
        public static void Main()
        {
            var bus = …
Run Code Online (Sandbox Code Playgroud)

ipc masstransit azureservicebus microservices .net-core

5
推荐指数
1
解决办法
1513
查看次数