मैं PUSH/PULL
मोड में zeroMQ
साथ python
उपयोग करने के लिए, आकार के संदेशों 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 बिट, कोर डुओ मशीन 2 [जीबी] रैम के साथ उपयोग कर रहा हूं।
नोट: मैं ही उदाहरण की कोशिश की RabbitMQ
का उपयोग कर और सब कुछ अच्छी तरह से काम करता है - कोई संदेश खो दिया है। मैं परेशान हूं क्योंकि मैं अक्सर zeroMQ
की प्रशंसा सुनता हूं। यह क्यों विफल हुआ जहां RabbitMQ
सफल हुआ?
सीडब्ल्यूबी, धन्यवाद। यह काम करता है, लेकिन ऐसा प्रतीत होता है कि 'खरगोश एमक्यू' इतना अधिक विश्वसनीय है। मैं डेटा की 40-60 [एमबी] को आसानी से भेज सकता हूं, जबकि 'शून्य एमक्यू' चीजें अटक जाती हैं/विश्वसनीय रूप से काम नहीं करती हैं। – user3262424
पर्याप्त मेला। मुझे नहीं पता कि इस मामले में 0 एमक्यू या पायज्मक को दोष देना है या नहीं; अंतिम परिणाम आपकी परवाह किए बिना परेशानी है। क्या RabbitMQ पर 0 एमक्यू लाभ के लायक हैं, यह निश्चित रूप से आपका निर्णय है।डेटा का 40-60 एमबी या तो 0 एमक्यू के लिए कोई समस्या नहीं होनी चाहिए; लेकिन यहां कुछ ऐसा कर रहा है ... – cwb
मुझे पता है कि '0 एमक्यू' काम करना चाहिए (और शायद, 'खरगोश एमक्यू' से भी तेज काम करता है) - फिर भी, मेरे सीमित परीक्षण से, जब तक कि किसी को ** चरम गति ** की आवश्यकता न हो - 'rabbitMQ' अधिक विश्वसनीय है। – user3262424