【发布时间】:2016-07-13 19:09:27
【问题描述】:
我一直在阅读有关如何使用 RabbitMQ C# 客户端的教程。我正在尝试向服务器发送一条 hello world 消息并在我端接收它,以便我知道传输成功。 tutorial 为发送和接收类提供了以下类文件定义:
发送.cs
using System;
using RabbitMQ.Client;
using System.Text;
class Send
{
public static void Main()
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using(var connection = factory.CreateConnection())
using(var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
string message = "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "",
routingKey: "hello",
basicProperties: null,
body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
Receive.cs
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
class Receive
{
public static void Main()
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using(var connection = factory.CreateConnection())
using(var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
};
channel.BasicConsume(queue: "hello",
noAck: true,
consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
}
当我(在 Visual Studio 中)运行项目时,我收到一个错误,即定义了多个入口点,这是由于两个类都具有 main() 方法这一事实引起的。我尝试指定一个启动项目,以便它知道要使用哪个 main,但我没有看到它的选项。
我不确定应该使用哪个 main,因为这两个文件在本教程中都是故意以这种方式构建的。我对 C# 有点生疏,因为我最近主要使用 C++ 进行编程。
是否假定我应该有一个主文件来实例化两个类?如果没有,项目应该如何构建?
【问题讨论】:
-
似乎它们应该单独运行。如果你想通过 VS 运行,那么在不同的实例中打开它们,运行 Send,然后 Receive。
-
@VivekChavda 如果我在 VS 中运行它们,你的意思是说它们应该在单独的项目中吗?
-
是的,它们看起来是独立的项目,因为它们会生成独立的可执行文件。 stackoverflow.com/questions/4775187/…
-
@VivekChavda 我收到错误消息,当我自己运行接收文件时,它无法连接到服务器上的代理。
-
这是一个单独的问题。我会再发一个帖子,如果你想不出来。我看不到发送方如何连接和运行,而接收方则不能,但我不熟悉 rabbitmq 的工作原理以及您可能遇到的常见问题/解决方案。
标签: c# visual-studio class rabbitmq