我正在尝试amq.fanout
使用rabbitmq-c
RabbitMQ 的 amqp 客户端创建类型交换。但是,我对我必须为它声明的确切内容感到困惑。根据这个,我必须声明交换名称和类型,以及可选的持久性和生命周期语义。
当我声明一个交换时,看起来我可以提供“交换”,我认为它是交换的名称,以及交换类型,例如amq.fanout
。从examples/amqp_exchange_declare.c
amqp_exchange_declare(conn,
1,
amqp_cstring_bytes(exchange),
amqp_cstring_bytes(exchangetype),
0, 0, 0, 0,
amqp_empty_table);
但是,如果我看一个发布的例子,在第二个参数中,有一个地方提供交换类型exchange
,它是命名的。例如,examples/amqp_producer.c
amqp_basic_publish(conn,
1,
amqp_cstring_bytes("amq.direct"),
amqp_cstring_bytes(queue_name),
0,
0,
NULL,
message_bytes)
但是没有地方提供交易所的名称。那么如何发布到命名交换?
为什么我要提供一个 queue_name 来发布?我应该只发布到交易所 - 队列应该对发布者隐藏。这只是示例中命名不佳的变量,还是我遗漏了一些基本的东西?