Tôi đã gặp vấn đề tương tự như bạn đã làm và những gì tôi đã làm là chỉnh sửa mã nguồn của rabbitMQDotNetClient.
File: 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();
}
Compile với USE_DEFINED_QUEUE_NAMES cờ. Điều này sẽ tạo một tên hàng đợi với tên bạn đã cho trong tệp app.config hoặc web.config của bạn. Bạn luôn có thể thay đổi các tùy chọn hàng đợi trên QueueDeclare (...) nếu bạn muốn hàng đợi của bạn hoạt động khác với những thứ tôi đang tạo. Chúc mừng!
Cảm ơn. Đó là câu trả lời mà tôi đang tìm kiếm. Nó cơ bản làm cho nó vô nghĩa để thậm chí có một ràng buộc WCF cho rabbitMQ nếu nó không thể cung cấp cho bạn điều khiển này. –