【问题标题】:Control Masstransit Exchanges and Bindings控制公共交通交换和绑定
【发布时间】:2021-11-26 06:29:16
【问题描述】:

我正在使用大众运输。我想避免为端点创建一个交换,而是让端点队列直接绑定到发布交换。

这是我的代码

    cfg.Message<Notification>(x => { x.SetEntityName("NOTIFICATION_REQUEST"); });

    g.ReceiveEndpoint("notification-workerQ", e =>        
    {
         e.Consumer<NotificationConsumer>();
    });

这会创建

  • NOTIFICATION_REQUEST 交换
  • notification-workerQ 交换
  • 通知-workerQ 队列

有没有办法避免 notification-workerQ 交换并将队列直接绑定到 NOTIFICATION_REQUEST 交换?

其他问题

我被要求根本不创建一个交换,而是使用一个已经存在的主题交换,我使用路由键将我的队列绑定到。

这意味着我的 notification-workerQ 应该使用“componentX.something.notification”之类的路由键绑定到 GENERIC_DROP 交换

可能是这样的

    g.ReceiveEndpoint("notification-workerQ", e =>        
    {
         e.Consumer<NotificationConsumer>(x => 
         { 
            //THIS IS NOT WORKING CODE
            x.consumeFrom("GENERIC_DROP", "ROUTING_KEY") 
         });
    });

【问题讨论】:

    标签: c# rabbitmq masstransit


    【解决方案1】:

    没有办法阻止 MassTransit 创建 notification-workerQ 交换,因为 MassTransit 总是为队列创建匹配的交换。

    但是,您可以通过如下所示配置接收端点,将现有的主题交换与路由键绑定。

    e.Bind("NOTIFICATION_REQUEST", x =>
    {
        x.RoutingKey = "ROUTING_KEY";
        x.ExchangeType = ExchangeType.Topic;
    });
    

    还有a sample展示了如何使用direct交换,主题交换的配置方式相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-08-23
      • 2022-10-13
      • 2021-09-17
      • 1970-01-01
      相关资源
      最近更新 更多