2015-05-30 29 views
0

我有四个消费者,当发生错误时,消息发布到默认EasyNetQ_Default_Error_Queue是否有可能向每个队列消费者写入自己的错误交换如何在Easynetq中为每个使用者声明自定义错误excahange?

例如;

Queue Name : A ErrorExchange :A_ErrorExchange 
Queue Name : B ErrorExchange :B_ErrorExchange 

bus.Advanced.Conventions.ErrorExchangeNamingConvention = new ErrorExchangeNameConvention(info => "A_DeadLetter"); 

bus.Advanced.Conventions.ErrorExchangeNamingConvention = new ErrorExchangeNameConvention(info2 => "B_DeadLetter"); 

回答

1

从您所提供的代码,它看起来像你几乎没有 - 你只需要重写ErrorExchangeNamingConventionErrorQueueNamingConvention适当。

作为一个例子,这里是一个将返回IBus这些公约覆盖纳入指定消费者名称的实例的方法:

public IBus CreateBus(string connectionString, string consumerName) 
{ 
    var bus = RabbitHutch.CreateBus(connectionString); 

    // Modify the following to create your error exchange name appropriately 
    bus.Advanced.Container.Resolve<IConventions>().ErrorExchangeNamingConvention = 
     info => consumerName + "_ErrorExchange"; 

    // Modify the following to create your error queue name appropriately 
    bus.Advanced.Container.Resolve<IConventions>().ErrorQueueNamingConvention = 
     () => consumerName + "_ErrorQueue"; 

    return bus; 
} 
相关问题