Я пытаюсь использовать python
с zeroMQ
в PUSH Режим / PULL
, отправка сообщений размером 4 [МБ] каждые несколько секунд.
По какой-то причине, хотя кажется, что все сообщения отправлены, ТОЛЬКО НЕКОТОРЫЕ из них были получен сервером. Что мне здесь не хватает?
Вот код для клиента - client.py
import zmq
import struct
# define a string of size 4[MB]
msgToSend = struct.pack('i', 45) * 1000 * 1000
context = zmq.Context()
socket = context.socket(zmq.PUSH)
socket.connect("tcp://127.0.0.1:5000")
# print the message size in bytes
print len(msgToSend)
socket.send(msgToSend)
print "Sent message"
А вот код для сервера - server.py
import zmq
import struct
context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.bind("tcp://127.0.0.1:5000")
while True:
# receive the message
msg = socket.recv()
print "Message Size is: {0} [MB]".format( len(msg) / (1000 * 1000) )
Что мне не хватает? Как я могу гарантировать, что сообщения всегда отправляются и не теряются?
Если это важно, я использую Ubuntu 10.04
32-битную машину Core Duo с 2 [ГБ] ОЗУ.
ПРИМЕЧАНИЕ: Я попробовал тот же пример , используя RabbitMQ
, и все работает хорошо - сообщения не теряются. Я озадачен, так как часто слышу похвалы zeroMQ
. Почему он потерпел неудачу, а RabbitMQ
преуспел?