我正在尝试使用python
inzeroMQ
模式,每隔几秒PUSH / PULL
发送一次大小为4[MB]的消息。
出于某种原因,虽然看起来所有消息都已发送,但似乎只有其中一些消息已被服务器接收。我在这里想念什么?
这是客户端的代码-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[GB] RAM。
注意:我尝试使用相同的示例RabbitMQ
,一切正常 - 没有消息丢失。我很困惑,因为我经常听到赞美zeroMQ
。为什么在RabbitMQ
成功的地方失败了?