在rabbitmq中不存在的队列上发布消息时如何中止代码

Chi*_*tel 4 rabbitmq rabbitmq-exchange rabbitmq-c

我已经编写了服务器客户端应用程序。
服务器端服务器将在直接交换上使用路由键key1
初始化队列queue1。 在初始化和声明之后,只要有人在上面写入,它就会消耗数据。

客户端

客户端将使用路由密钥key1在该交换上发布一些数据。
另外,在发布之前我已将 mandotory 标志设置为 true。

问题

当我首先启动服务器时,一切都很好。但是当我首先启动客户端并使用路由密钥发布数据时,我遇到了问题。当客户发布数据时,经纪商也不例外。

要求
当我在不存在的队列上发布数据时,我希望出现异常或错误。

pin*_*ain 6

如果您将发布mandatory标志设置为 的消息true,则该消息将返回,以防它无法路由到任何队列。

对于不存在的交易所,禁止向不存在的交易所发布消息,因此您将不得不收到有关该错误的错误,例如NOT_FOUND - no exchange 'nonexistent_exchange' in vhost '/'.

您也可以根据需要在客户端声明交换和队列并绑定它们。这些操作是幂等的。

请注意,在每次发布时创建和绑定交换和队列可能会对性能产生负面影响,因此在客户端启动时执行此操作,而不是每次发布时都这样做。

PS:如果您使用rabbitmq-c,那么值得引用basic_publish文档

请注意,在 AMQ 协议级别 basic.publish 是一个异步方法:

这意味着代理上发生的错误情况(例如发布到不存在的交易所)将不会反映在此函数的返回值中。