如何在IBM MQ中添加多行消息?避免换行被识别为新消息
IBM MQ发送多行消息(以"}"为分隔符)
amqsput默认会把每行文本当作一条独立消息,所以换行会导致消息拆分。以下是两种可行的解决方法:
方法一:使用runmqsc直接读取文件发送单条消息
runmqsc支持从文件读取完整内容作为单条消息发送,无需担心换行拆分。执行以下命令:
echo "PUT QUEUE(XYZ.ABCD.DEF.Q.Q.Q.PUT.AQ) MSG(FILE('msg.txt'))" | runmqsc Q_Manager
这条命令会让MQ读取msg.txt的全部内容(包括所有换行),将其作为一条完整消息发送到目标队列。
方法二:预处理消息后用amqsput发送
通过awk提取到分隔符"}"为止的全部内容,再传递给amqsput发送:
# 提取到包含"}"的行为止的所有内容 MSG=$(awk '/}/ {print; exit} {print}' msg.txt) # 将提取的内容作为单条消息发送 echo -e "$MSG" | /path/path XYZ.ABCD.DEF.Q.Q.Q.PUT.AQ Q_Manager
awk会读取msg.txt直到匹配到"}"的行(包含该行)后停止,确保提取的是完整的目标消息;echo -e保留内容中的换行符,管道传递给amqsput后,管道结束相当于手动输入消息后按Ctrl+D,从而发送单条多行消息。
内容的提问来源于stack exchange,提问作者Rupesh SA
相关产品推荐
相关产品推荐

