python程序中往activemq发消息,用了第三方包stompy==0.2.9
代码如下:
from stompy.simple import Client
stomp = Client(host=config[‘ACTIVE_MQ_HOST’], port=config[‘ACTIVE_MQ_PORT’])
stomp.connect(username=config[‘ACTIVE_MQ_USER_NAME’], password=config[‘ACTIVE_MQ_USER_PASSWORD’])
msg_dict = dict()
msg_dict[“address”] = addresses
msg_dict[“msg”] = msg
stomp.put(json.dumps(msg_dict), destination=‘queue/uat’
stomp.disconnect()
本来一直用着也没出过什么问题,后来遇到了比较长的msg内容要发送到mq,
msg是一个 html的字符串,长度如下,
此时发送到mq,在windows环境下没问题,可以正常发送,
但在linux环境下报如下错误:
Traceback (most recent call last):
File “/usr/src/util.py”, line 80, in __send_msg_to_amq
stomp.put(json.dumps(msg_dict), destination=‘queue/uat’
File “/usr/local/lib/python2.7/site-packages/stompy/simple.py”, line 81, in put
return self.stomp.send(conf)
File “/usr/local/lib/python2.7/site-packages/stompy/stomp.py”, line 90, in send
want_receipt=True)
File “/usr/local/lib/python2.7/site-packages/stompy/stomp.py”, line 245, in _send_command
reply = self.send_frame(frame)
File “/usr/local/lib/python2.7/site-packages/stompy/stomp.py”, line 236, in send_frame
frame = self.frame.send_frame(frame.as_string())
File “/usr/local/lib/python2.7/site-packages/stompy/frame.py”, line 250, in send_frame
self.sock.sendall(frame)
File “/usr/local/lib/python2.7/socket.py”, line 228, in meth
return getattr(self._sock,name)(*args)
error: [Errno 11] Resource temporarily unavailable
我的解决办法是换了一个其他的连接mq的三方包
stomp.py==4.1.23
代码如下:
import stomp
conn = stomp.Connection10([(config[‘ACTIVE_MQ_HOST’], config[‘ACTIVE_MQ_PORT’])])
conn.start()
conn.connect(username=config[‘ACTIVE_MQ_USER_NAME’], passcode=config[‘ACTIVE_MQ_USER_PASSWORD’], wait=True)
msg_dict = dict()
msg_dict[“address”] = email_add
msg_dict[“msg”] = msg
conn.send(‘queue/uat’, json.dumps(msg_dict))
conn.disconnect()
即可以正常发送,问题解决.