2014-01-19 7 views
3

(송신자가 10 개의 메시지를 보낸 후 보낸 사람이 추락 한 경우) zeromq.zeromq는 발신자/수신자가 충돌 한 후에 배달을 보장합니까?

시나리오 1 : 받는 사람이 메시지를 하나씩 처리하는 데 상당한 시간이 소요되지만이 시나리오에서는 여전히 10 개의 메시지가 표시됩니까?

시나리오 2 : 다른 시나리오는 수신자가 충돌 할 때 수신기가 복구 된 후에도 정전 동안 놓친 것을 계속 수신 할 수 있습니까?

시나리오 3 : 수신자가 대기열에있는 메시지와 충돌하고 다른 수신자가 대기열을 듣기 시작하면 대기열에 남아있는 것을 얻을 수 있습니까?

답변

2

시나리오 1 : 수신기는 여전히이 시나리오에서 10 개의 메시지를 얻을 것이다, 몇 가지 눈에 띄는 시간 비용 메시지를 하나 하나를 처리?

발신자가 모든 메시지를 보낸 경우 수신자 대기열에 저장됩니다. 높은 워터 마크 옵션을 수신기에 충분히 높게 설정했다고 가정하면 모든 워터 마크 옵션을 처리해야합니다.

시나리오 2 : 수신기 충돌, 수신기 가 복구 된 후, 그것은 그것의 정전 기간 동안하지 못한 것을 계속받을 수있을 때 또 다른 시나리오는?

보낸 사람이 충돌하지 않는다고 가정 할 때 : 보낸 사람은 해당받는 사람에 대한 나가는 큐에 대기중인 메시지를 계속 갖게됩니다. 대기중인 메시지 수가 보낸 사람에 설정된 높은 워터 마크 옵션을 초과하지 않는 한 수신기는 다시 연결할 때 보류중인 메시지를 수신합니다.

시나리오 3 : 수신기가 큐에 메시지를 대기와 충돌하는 경우, 다른 수신기는,이 큐에 남아 있는지 을 얻을 수있는 큐를 듣고 시작?

ZeroMQ는 피어마다 큐를 유지합니다. 그래서 그 대기열이 손실됩니다. 이것은 단순 피어 투 피어 방법론을 사용한다고 가정합니다. PUBLISHER -> SUBSCRIBER를 사용하는 경우 여러 수신자가 동일한 대기열을 공유 할 수 있습니다.