gpt4 book ai didi

java - 如何在 Java 中将 JMSBytesMessage 转换为 TextMessage

转载 作者:行者123 更新时间:2023-12-02 01:28:02 25 4
gpt4 key购买 nike

我正在构建一些 MQ 队列连接,我需要将消息队列从 queueReceiver.Receivenowait() 转换为 JMS Textmessage。

因为 queueReceiver.Receivenowait() 格式是 Byte,所以我需要将其转换为 Textmessage,以便将中断消息放入数组 List 中。

我已经使用以下方法做到了这一点:

queueReceiver = queueSession.createReceiver(ringQueue);

要获取 Bytemessage,我需要转换为 JMS 文本消息:

List<String> outputList = new ArrayList<String>();
while (loop) {
TextMessage msgResponse = (TextMessage) bytesMessage;
if (msgResponse.getText() == null) {
loop = false;
} else {
message = msgResponse.getText();
outputList.add(message);
msgResponse.acknowledge();
}
}

我得到了这个错误代码:

java.lang.ClassCastException: com.ibm.jms.JMSBytesMessage cannot be cast to javax.jms.TextMessage

最佳答案

我的猜测是,您并不是真的想将 BytesMessage 转换为 TextMessage,而只是想将 BytesMessage< 中的字节数组转换String。如果这是真的,那么您可以使用如下代码:

List<String> outputList = new ArrayList<String>();
while (loop) {
if (bytesMessage instanceof BytesMessage) {
BytesMessage msgResponse = (BytesMessage) bytesMessage;
if (msgResponse.getBodyLength() == 0) {
loop = false;
} else {
byte[] bytes = new byte[(int) msgResponse.getBodyLength()];
msgResponse.readBytes(bytes);
outputList.add(new String(bytes));
msgResponse.acknowledge();
}
}
}

当然,bytesMessage 每次循环都需要是不同的消息。

关于java - 如何在 Java 中将 JMSBytesMessage 转换为 TextMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57569861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com