rabbitmq中,我是使用C#语言,
然后我MQ中的生产者代码是通配符模式,传过去的参数有头部信息,因此可以正常发送数据。
但是消费者代码也是通配符模式,也是需要传递头部信息,但是一直回调不到数据。返回的一直是空数据。
有人帮我瞧瞧嘛。
```c#
using (var connection = connFactory.CreateConnection())
using (var channel = connection.CreateModel())
{
// 声明交换机和队列
//var exchangeName = "GRAVITY_DC_ICS_DESIGN_PO_ORDER_FAST_CREATE_OUTPUT";
var queueName = channel.QueueDeclare().QueueName;
// 绑定交换机和队列以及头部条件
channel.ExchangeDeclare(exchangeName, ExchangeType.Topic, true);
// var arguments = new Dictionary<string, object>
//{
// { "destination", "PoOrderResponseEvent" } // 头部条件,可以根据需要自定义
//};
var properties = channel.CreateBasicProperties();
// 设置自定义头部信息
properties.Headers = new Dictionary<string, object>
{
{ "destination", "PoOrderResponseEvent" },
};
var routeKey = "topic.*";
channel.QueueBind(queueName, exchangeName, routeKey, properties.Headers);
//channel.QueueBind(queueName, exchangeName, "*", arguments: arguments); // 绑定队列到交换机并设置通配符模式
// 创建基本消费者
var consumer = new EventingBasicConsumer(channel);
var sds=new BasicDeliverEventArgs();
// 注册接收消息的事件处理程序
consumer.Received += (sender, args) =>
{
sds = args;
var message = Encoding.UTF8.GetString(args.Body.ToArray());
Console.WriteLine("Received message: {0}", message);
};
var sdsd = sds;
// 启动消费者开始接收消息
channel.BasicConsume(queueName, true, consumer);
Console.WriteLine("Waiting for messages. Press Enter to exit.");
Console.ReadLine();
```
你把运行日志打印出来发给我
生产者与交换机的关系是多对多的有关系,多个生产者可以给同一个交换机生产消息,同时一个生产者也可以能多个交换机生产消息。