Я установил M4-версию Java-брокера Apache Qpid на Windows и запустил его, используя готовую конфигурацию (с помощью сценария qpid-server.bat).
Я сейчас пытаюсь опубликовать сообщение в очереди, используя клиентскую библиотеку RabbitMQ C # (версия 1.5.3, скомпилированная для .NET 3.0); мой код:
public void PublishMessage(string message)
{
ConnectionFactory factory = new ConnectionFactory();
factory.Parameters.VirtualHost = "...";
IProtocol protocol = Protocols.FromEnvironment();
using (IConnection conn = factory.CreateConnection(protocol, "localhost", 5672))
{
using (IModel ch = conn.CreateModel())
{
string exchange = "...";
string routingKey = "...";
ch.BasicPublish(exchange, routingKey, null, Encoding.UTF8.GetBytes(message));
}
}
}
По сути, я не уверен, какие значения использовать для factory.Parameters.VirtualHost
и строк exchange
и routingKey
. Я пробовал различные комбинации, но, похоже, ничего не работает - ближе всего я вижу следующее в журнале сервера Qpid:
2009-03-19 17:11:04,248 WARN [pool-1-thread-1] queue.IncomingMessage (IncomingMessage.java:198) - MESSAGE DISCARDED: No routes for message - Message[(HC:896033 ID:1 Ref:1)]: 1; ref count: 1
, который выглядит так, как будто сервер Qpid получает сообщение, но не знает, что с ним делать.
Буду очень признателен за любые советы о том, какие значения конфигурации мне нужны в моем клиентском коде (учитывая, что я использую конфигурацию Qpid по умолчанию в virtualhosts.xml). Также была бы очень полезна более общая информация о виртуальных хостах, обменах, очередях и ключах маршрутизации, а также о том, как Qpid связывает их все вместе.
Заранее спасибо,
Alan