私はあなたと同じ問題を抱えていました。私がしたことは、rabbitMQDotNetClientのソースコードを編集することでした。
ファイル:RabbitMQInputChannel.cs
public override void Open(TimeSpan timeout)
{
if (State != CommunicationState.Created && State != CommunicationState.Closed)
throw new InvalidOperationException(string.Format("Cannot open the channel from the {0} state.", base.State));
OnOpening();
#if VERBOSE
DebugHelper.Start();
#endif
//Create a queue for messages destined to this service, bind it to the service URI routing key
#if USE_DEFINED_QUEUE_NAMES
//here we create a queue that uses the name given in the service address in the wcf binding.
//if the address in the web.config is: soap.amq:///QueueName
//the name of the queue will be: QueueName
//LVV
string queue = m_model.QueueDeclare(base.LocalAddress.Uri.PathAndQuery, true, false, false, null);
#else
string queue = m_model.QueueDeclare();
#endif
m_model.QueueBind(queue, Exchange, base.LocalAddress.Uri.PathAndQuery, null);
//Listen to the queue
m_messageQueue = new QueueingBasicConsumer(m_model);
m_model.BasicConsume(queue, false, m_messageQueue);
#if VERBOSE
DebugHelper.Stop(" ## In.Channel.Open {{\n\tAddress={1}, \n\tTime={0}ms}}.", LocalAddress.Uri.PathAndQuery);
#endif
OnOpened();
}
コンパイルフラグUSE_DEFINED_QUEUE_NAMESと。これにより、app.configファイルまたはweb.configファイルに指定した名前のキュー名が作成されます。キューが私が作成しているものとは異なる振る舞いをするようにするには、QueueDeclare(...)のキューオプションをいつでも変更することができます。 乾杯!
出典
2013-10-31 15:19:11
LVV
ありがとうございました。それは私が探していた答えです。それはあなたにこの制御を与えることができない場合、基本的にそれは無意味にもWCFのrabbitMQのバインディングを持っています。 –