遵循指南here我可以为我的客户端连接设置“consumer_cancel_notify”属性,但是当删除队列时,客户端仍然没有注意到。我猜我可能必须覆盖某些方法或在某处设置回调,但在深入挖掘源代码之后,我迷失了我在哪里做到这一点。有人随便知道我在哪里听这个通知吗?
答案 0 :(得分:0)
好的,我的工作方式如下:
在AMQPQueue :: sendConsumeCommand()内部,在while(1)循环内,代码检查不同的* frame.payload.method.id * s,添加对AMQP_BASIC_CANCEL_METHOD的检查,例如
if (frame.payload.method.id == AMQP_BASIC_CANCEL_METHOD){
cout << "AMQP_BASIC_CANCEL_METHOD received" << endl;
if ( events.find(AMQP_CANCEL) != events.end() ) {
(*events[AMQP_CANCEL])(pmessage);
}
continue;
}
就是这样。
出于我的目的,我想重新声明队列,如果它被删除,以便我可以继续消费消息,所以在我的回调中我只是重新声明队列,设置绑定,添加事件,设置消费者标签,并消耗。