有什么方法可以更改 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