【问题标题】:Any way to change message format in MQ Console (IBM MQ docker)?有什么方法可以在 MQ 控制台(IBM MQ docker)中更改消息格式?
【发布时间】:2020-07-24 23:10:31
【问题描述】:

我正在使用IBM MQ docker image,但我似乎无法更改消息格式。有什么办法吗?单击Create + 后,我看到一个“格式”字段,但它似乎无法编辑。有办法改变吗?

【问题讨论】:

  • 我认为问题应该是“从 MQ 控制台甚至从 REST API 更改消息格式的任何方式”。
  • Sound like screen 仅提供非常有限(仅一种)类型的消息格式(即字符串)。您应该尝试使用MQ Visual Edit 之类的工具来创建/更新/删除队列中的消息。
  • 感谢推荐!我试试看。

标签: ibm-mq


【解决方案1】:

IBM MQ v9.2.0 REST API 支持纯文本格式(UTF-8 编码字符串)消息。

here 所述,可通过 IBM MQ 控制台获得 REST 消息传递 API 的 Swagger 文档

有关 MQ REST 消息传递的更多信息可以在 IBM MQ 知识中心here 中找到,并且有一个简单的 REST 教程可用here

您似乎已连接到在您的 docker 容器中运行的 IBM MQ 控制台。如果您查看您的 docker run 命令,您应该会看到端口 1414 已分配用于消息传递,端口 9443 已分配给控制台。

正如@JoshMc 所说,控制台的“创建消息”功能旨在使用来自用户的输入作为有效负载将简单消息放入队列。仅支持 MQSTR 消息类型,并且没有从文件上传消息数据的选项。

如果您想使用 GUI 来放置和获取使用不同消息类型的消息,请查看 GitHub 上的 rfhutil 工具here

您还可以使用 MQ API 来处理不同的负载类型。这个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

【讨论】:

  • 感谢您的详细解答!我会研究这些资源。
  • 很好的答案 Rich,很高兴看到另一位 IBM 员工在这里提供答案。
【解决方案2】:

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

消息作为 MQSTR 格式的消息发送,并使用当前用户上下文放置。

...

请求正文格式
请求正文必须是文本并使用 UTF-8 编码。不需要特定的文本结构。创建包含请求正文文本的 MQSTR 格式消息并将其放入指定队列。

【讨论】:

    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 2021-09-24
    • 2020-06-02
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多