Я пытаюсь использовать 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
удалось?