2
피카의 twisted protocol adapter을 사용하고 있습니다. 내가 메시지를 성공적으로 처리 한 한 때 나는이 호출을 사용하여 RabbitMQ에 승인을 보내Twisted and Pika - 메시지 확인 호출에 콜백을 추가하는 방법은 무엇입니까?
channel.basic_ack(delivery_tag=delivery_tag)
basic_ack 호출은 비동기 적으로 발사하는 것 같지만 그래서 나는 콜백 또는 errback을 추가 할 수 없습니다 이연 반환하지 않는 것. 메시지가 전송되기 전에 나는 큐에서 특정 메시지를 기다리는 원하기 때문에 내가 지금 작은 문제로 실행했습니다 물론이를 처리 및 종료 원자로 즉
channel.basic_ack(delivery_tag=delivery_tag)
reactor.stop()
반응기가 종료됩니다. 이 문제를 해결하기 위해 지연 작업을하고 있습니다.
channel.basic_ack(delivery_tag=delivery_tag)
reactor.callLater(5, reactor.stop)
그러나 꽤 "해커"처럼 보입니다. 나는 다음과 같이 할 수있는 것을 좋아할 것입니다.
d = channel.basic_ack(...)
d.addBoth(lambda x: reactor.shutdown())
나는 여기에 뭔가 분명한 것을 놓치고 있습니까? ack 호출의 끝으로 콜백을 연결하는 것이 실제로 불가능합니까?
이 때 정확히 콜백이 발생할까요 성공적으로 전송 희망하는 것 같다? –
RabbitMQ에 대한 응답이 성공적으로 전송되면 기본적으로 "지금 내가 부탁 한 작업을 수행했기 때문에 지금 종료 중입니다" –
RabbitMQ 프로토콜에 acks에 대한 acks가 포함되어 있습니까? 그렇지 않은 경우, RabbitMQ에 ack가 성공적으로 전송 된 시점을 어떻게 알 수 있습니까? –