Ibm mq 有没有办法在MQ控制台(IBM MQ docker)中更改消息格式?

Ibm mq 有没有办法在MQ控制台(IBM MQ docker)中更改消息格式?,ibm-mq,Ibm Mq,我正在使用,似乎无法更改消息格式。有什么办法吗?单击创建+后,我看到一个“格式”字段,但它似乎不可编辑。有没有办法改变这一点 MQ控制台使用IBM MQ REST API发送消息,更多的是用于简单的“hello world”测试目的 根据IBM MQ 9.2知识中心页面: 消息作为MQSTR格式的消息发送,并使用当前用户上下文放置 请求正文格式 请求正文必须为文本并使用UTF-8编码。不需要特定的文本结构。将创建包含请求正文文本的MQSTR格式的消息并将其放入指定队列 MQ控制台使用IBM M

我正在使用,似乎无法更改消息格式。有什么办法吗?单击创建+后,我看到一个“格式”字段,但它似乎不可编辑。有没有办法改变这一点


MQ控制台使用IBM MQ REST API发送消息,更多的是用于简单的“hello world”测试目的

根据IBM MQ 9.2知识中心页面:

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

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


MQ控制台使用IBM MQ REST API来发送消息,更多的是用于简单的“hello world”测试目的

根据IBM MQ 9.2知识中心页面:

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

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


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

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

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

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

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

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

您还可以使用MQ API处理不同的负载类型。这提供了一系列语言的示例作为起点

这为使用字符串的简单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
并将使用者更改为处理字节消息

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 v9.2.0 REST API支持纯文本格式(UTF-8编码字符串)消息

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

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

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

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

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

您还可以使用MQ API处理不同的负载类型。这提供了一系列语言的示例作为起点

这为使用字符串的简单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
并将使用者更改为处理字节消息

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

我认为问题应该是“从MQ控制台甚至REST API更改消息格式的任何方法”。听起来屏幕只提供非常有限(只有一种)类型的消息格式(即字符串)。您应该尝试创建/更新/删除队列中的邮件之类的工具。谢谢您的推荐!我将试一试。我认为问题应该是“任何从MQ控制台甚至REST API更改消息格式的方法”。听起来屏幕只提供非常有限(只有一种)类型的消息格式(即字符串)。您应该尝试创建/更新/删除队列中的邮件之类的工具。谢谢您的推荐!我试试看。谢谢你详细的回答!我将研究这些资源。很好的答案丰富,很高兴看到另一个IBM用户在这里提供答案。谢谢你的详细答案!我将研究这些资源。很好的答案丰富,很高兴看到另一个IBM用户在这里提供答案。