Linux下发送activemq消息过长导致 error: [Errno 11] Resource temporarily unavailable

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()

即可以正常发送,问题解决.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下多种方案来查看Linux下的ActiveMQ版本: 1. 查看ActiveMQ版本信息文件 在ActiveMQ的安装目录下,可以找到一个名为VERSION.txt的文件,其中包含了ActiveMQ的版本信息。可以使用命令`cat`或`less`查看该文件的内容,例如: ``` $ cat /opt/apache-activemq-5.16.0/VERSION.txt Apache ActiveMQ 5.16.0 ``` 2. 查看ActiveMQ启动日志 在ActiveMQ启动时,会在控制台输出一些信息,其中包括版本信息。可以使用命令`tail`查看最后几行启动日志,例如: ``` $ tail -n 10 /opt/apache-activemq-5.16.0/logs/activemq.log INFO | Apache ActiveMQ 5.16.0 (localhost, ID:myhostname-38182-1629791896065-0:1) is starting INFO | Listening for connections at: tcp://localhost:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600 INFO | Connector tcp://localhost:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600 started INFO | ActiveMQ JMS Message Broker (localhost, ID:myhostname-38182-1629791896065-0:1) started ``` 可以从上述日志信息中找到ActiveMQ的版本号。 3. 使用命令行工具查看版本信息 ActiveMQ提供了一个命令行工具`activemq-admin`,可以使用该工具查看版本信息。首先需要启动ActiveMQ,然后执行以下命令: ``` $ /opt/apache-activemq-5.16.0/bin/activemq-admin --version Apache ActiveMQ 5.16.0 ``` 上述命令会输出ActiveMQ的版本信息。 以上是三种查看LinuxActiveMQ版本的方案,可以根据实际情况选择合适的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值