有什么方法可以更改 MQ 控制台 (IBM MQ docker) 中的消息格式?
Any way to change message format in MQ Console (IBM MQ docker)?
我正在使用 IBM MQ docker image,我似乎无法更改消息格式。有什么办法吗?单击 Create +
后,我看到一个“格式”字段,但它似乎无法编辑。有办法改变吗?
MQ 控制台使用 IBM MQ REST API 发送消息,更多用于简单的“hello world”测试目的。
根据 IBM MQ 9.2 知识中心页面 IBM MQ>Reference>Developing applications reference>Messaging REST API reference>REST API resources>/messaging/qmgr/{qmgrName}/queue/{queueName}/message>POST:
Messages are sent as MQSTR formatted messages, and are put using the current user context.
...
Request body format
The request body must be text and use UTF-8 encoding. No specific text structure is required. An MQSTR formatted message containing the request body text is created and put to the specified queue.
IBM MQ v9.2.0 REST API 支持纯文本格式(UTF-8 编码字符串)消息。
如here
所述,可通过 IBM MQ 控制台获得用于 REST 消息传递的 Swagger 文档API
有关 MQ REST 消息传递的更多信息,请参阅 IBM MQ 知识中心 here and there is a simple REST tutorial available here。
您似乎已连接到 docker 容器中的 IBM MQ 控制台 运行。如果查看 docker run
命令,您应该会看到端口 1414
已分配给消息传递,端口 9443
已分配给控制台。
正如 @JoshMc 所说,控制台的 'create message' 功能旨在使用用户输入作为有效负载将简单消息放入队列。仅支持 MQSTR 消息类型,没有从文件上传消息数据的选项。
如果您想使用 GUI 使用不同的消息类型来放置和获取消息,请查看 GitHub here
上可用的 rfhutil 工具
您还可以使用 MQ APIs 来处理不同的负载类型。此 GitHub Repo 提供了一系列语言的示例作为起点。
此 tutorial 提供了一个使用字符串的简单 JMS 应用程序的有效示例。可以更改 JmsPutGet.java
应用程序以发送和接收不同的消息类型,例如字节消息。这是通过将 JMS 消息类型从 javax.jms.TextMessage
更改为 javax.jms.BytesMessage
来实现的,如下所示:
添加以下导入
import javax.jms.BytesMessage;
import java.nio.charset.Charset;
更改生产者以使用字节消息
BytesMessage bytesMessage = context.createBytesMessage();
String payload = "Your lucky number today is " + uniqueNumber;
byte[] bytesPayload = payload.getBytes(Charset.forName("UTF-8"));
bytesMessage.writeBytes(bytesPayload);
并更改消费者以使用字节消息
consumer = context.createConsumer(destination);
byte[] receivedBytesMessage = consumer.receiveBody(byte[].class, 15000); // in ms or 15 seconds
我正在使用 IBM MQ docker image,我似乎无法更改消息格式。有什么办法吗?单击 Create +
后,我看到一个“格式”字段,但它似乎无法编辑。有办法改变吗?
MQ 控制台使用 IBM MQ REST API 发送消息,更多用于简单的“hello world”测试目的。
根据 IBM MQ 9.2 知识中心页面 IBM MQ>Reference>Developing applications reference>Messaging REST API reference>REST API resources>/messaging/qmgr/{qmgrName}/queue/{queueName}/message>POST:
Messages are sent as MQSTR formatted messages, and are put using the current user context.
...
Request body format
The request body must be text and use UTF-8 encoding. No specific text structure is required. An MQSTR formatted message containing the request body text is created and put to the specified queue.
IBM MQ v9.2.0 REST API 支持纯文本格式(UTF-8 编码字符串)消息。
如here
所述,可通过 IBM MQ 控制台获得用于 REST 消息传递的 Swagger 文档API有关 MQ REST 消息传递的更多信息,请参阅 IBM MQ 知识中心 here and there is a simple REST tutorial available here。
您似乎已连接到 docker 容器中的 IBM MQ 控制台 运行。如果查看 docker run
命令,您应该会看到端口 1414
已分配给消息传递,端口 9443
已分配给控制台。
正如 @JoshMc 所说,控制台的 'create message' 功能旨在使用用户输入作为有效负载将简单消息放入队列。仅支持 MQSTR 消息类型,没有从文件上传消息数据的选项。
如果您想使用 GUI 使用不同的消息类型来放置和获取消息,请查看 GitHub here
上可用的 rfhutil 工具您还可以使用 MQ APIs 来处理不同的负载类型。此 GitHub Repo 提供了一系列语言的示例作为起点。
此 tutorial 提供了一个使用字符串的简单 JMS 应用程序的有效示例。可以更改 JmsPutGet.java
应用程序以发送和接收不同的消息类型,例如字节消息。这是通过将 JMS 消息类型从 javax.jms.TextMessage
更改为 javax.jms.BytesMessage
来实现的,如下所示:
添加以下导入
import javax.jms.BytesMessage;
import java.nio.charset.Charset;
更改生产者以使用字节消息
BytesMessage bytesMessage = context.createBytesMessage();
String payload = "Your lucky number today is " + uniqueNumber;
byte[] bytesPayload = payload.getBytes(Charset.forName("UTF-8"));
bytesMessage.writeBytes(bytesPayload);
并更改消费者以使用字节消息
consumer = context.createConsumer(destination);
byte[] receivedBytesMessage = consumer.receiveBody(byte[].class, 15000); // in ms or 15 seconds