【发布时间】:2018-08-22 10:34:59
【问题描述】:
我有一个关于 Rabitmq 扇出交换的问题,我的问题是我想用 rabbitmq 和 c# 发布订阅示例。所以我创建了 2 个项目,其中一个是 Publisher,就是这样
static void Main(string[] args)
{
try
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.ExchangeDeclare("example.exchange", ExchangeType.Fanout, true, false, null);
var message = GetMessage(args);
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "example.exchange", routingKey: "", basicProperties: null, body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
}
catch (Exception ex)
{
Console.Write($"bir hata oluştu{ex.Message}");
}
}
private static string GetMessage(string[] args)
{
return ((args.Length > 0)
? string.Join(" ", args)
: "info: Hello World!");
}
我有一个消费者
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.ExchangeDeclare(exchange: "example.exchange",
type:"fanout",durable:true);
var queueName = channel.QueueDeclare().QueueName;
channel.QueueBind(queue: queueName, exchange: "foo.exchange",
routingKey: "");
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] {0}", message);
};
channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumer);
Console.ReadLine();
}
}
但我无法收到消息。为什么会这样?
【问题讨论】:
-
发布者发送消息时,您是否看到您的交换&队列以及队列中的消息?
-
我只看到 Exchange 我看不到消息。
-
你先运行哪个项目?
标签: c# .net rabbitmq publish-subscribe