我有一个在自己的服务器上运行的 rabbitmq 队列。
我可以sudo rabbitmqctl list_queues
在这台服务器上做队列中的消息数量。
在另一台服务器上,我收到 10 帧,并确认它们。然后我检查队列中的消息数量,并且数量没有改变。
然后我关闭 python 解释器并检查队列服务器上的消息数量,该数量减少了预期的数量(10)。我可以多次重复此过程,并且会发生相同的行为。
如果这是按照设计,我怎样才能让 ack 立即发生?我认为客户端类的del方法中可能存在奇怪的行为,但是没有。
是否发生了一些无证的魔术?
我的“确认”代码:
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)