4

txamqp pythonライブラリを使用してAMQPブローカー(RabbitMQ)に接続していますが、次のコールバックを持つコンシューマーがあります。

@defer.inlineCallbacks
def message_callback(self, message, queue, chan):
    """This callback is a queue listener
    it is called whenever a message was consumed from queue
    c.f. test_amqp.ConsumeTestCase for use cases
    """

    # The callback should be redefined here to keep getting further messages from queue
    queue.get().addCallback(self.message_callback, queue, chan).addErrback(self.message_errback)        

    print " [x] Received a valid message: [%r]" % (message.content.body,)

    yield self.smpp.sendDataRequest(SubmitSmPDU)

    # ACK the message in queue, this will remove it from the queue
    chan.basic_ack(message.delivery_tag)

メッセージを「確認」すると、キューから(確認のために)削除されますが、メッセージが「確認」されていない場合はどうなりますか?メッセージを延期して後で再度コールバックし、再試行にかかった時間を追跡できる「再試行」メカニズムを取得する必要があります。

また、キューからメッセージを一覧表示/削除するにはどうすればよいですか?

4

2 に答える 2

1

キューからメッセージを再試行するには、「retry」フラグが付いたメッセージを拒否する必要があり、キューに戻されます。

タイマー(ねじれたcallLater)で拒否すると、メッセージのキューイングはいつでも延期されます。

于 2012-12-12T15:08:18.940 に答える
1

RabbitMQには優れた管理プラグインがありますが、キューからメッセージを削除することさえできません。

基本的に、独自のアプリケーションを作成するか、これらのサードパーティの管理アプリケーションのどれがメッセージを削除できるかを把握する必要があります。

于 2012-09-21T22:24:36.163 に答える