我在 Windows 机器上安装了 Apache Qpid Java 代理的 M4 版本,并使用开箱即用的配置(通过 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 服务器正在接收消息,但不知道如何处理它。
任何关于我在客户端代码中需要什么配置值的建议(请记住我在 virtualhosts.xml 中使用默认的 Qpid 配置)将不胜感激。有关虚拟主机、交换器、队列和路由键以及 Qpid 如何将它们链接在一起的更多一般信息也将非常有用。
先感谢您,
艾伦