2017-12-01 11 views
1

다음 제작자 코드가 있습니다.RabbitMQ basic_publish가 비동기입니까?

메시지은 일부 계산 후에 얻은 dict 데이터입니다. 큐에 메시지을 게시하고 싶습니다. 그런 다음 다른 계산을 위해 메시지을 빈 dict로 재설정합니다. 그러나 소비자는 항상 대기열에서 빈 dict를 받고있다. 기분이 메시지 게시되기 전에 재설정됩니다 (비동기?). 동기시키는 방법?

message = {a big dict ...} 
channel.basic_publish(exchange='', 
          routing_key='my_queue', 
          body=json.dumps(message)) 
message = {} 

답변

1

예, channel.basic_publish은 비동기이며 이러한 방식으로 정확합니다.

삽입 시간을 기다리지 않습니다. 그렇지 않으면 느려질 것입니다.

메시지 처리 방법을 변경해야합니다. 그러나을 만들고 싶다면 트랜잭션을 사용할 수 있습니다. 트랜잭션이 공연을 삭제할 수 있습니다

channel.tx_select 
channel.basic_publish(exchange='', 
          routing_key='my_queue', 
          body=json.dumps(message)) 
channel.tx_commit 

참고 :

뭔가 같이해야합니다.

Read here 자세한 내용은