在python解释器退出之前,不要发送ack

时间:2014-06-16 19:47:29

标签: python rabbitmq stomp asynchronous-messaging-protocol

我有一个在自己的服务器上运行的rabbitmq队列。

我可以在此服务器上sudo rabbitmqctl list_queues查看队列中的消息数。

在另一台服务器上,我收到10帧,并确认它们。然后我检查队列中的消息数量,但数字没有改变。

然后关闭python解释器并检查队列服务器上的消息数,并且数量减少了预期的数量(10)。我可以多次重复这个过程,并发生相同的行为。

如果这是按照设计,我怎样才能立即发生ack?我想也许在客户端类的 del 方法中有奇怪的行为,但是nope

是否有一些无证魔法发生?

我的“acking”代码:

client = Stomp(StompConfig(uri=settings.QUEUE_SERVER))
client.connect()
client.subscribe(
    settings.INBOUND_QUEUE_NAME,
    {StompSpec.ACK_HEADER: StompSpec.ACK_CLIENT_INDIVIDUAL}
)

for each in range(10):
    frame = self.client.receiveFrame()
    self.client.ack(frame)

0 个答案:

没有答案