java - 如何在 Java 中将 JMSBytesMessage 转换为 TextMessage
问题描述
我正在构建一些 MQ 队列连接,我需要将消息队列从queueReceiver.Receivenowait()
.
因为queueReceiver.Receivenowait()
格式是字节,所以我需要将其转换为 Textmessage 以将中断消息转换为数组列表。
我已经这样做了:
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
解决方案
我的猜测是,您并不是真的想将 a 转换BytesMessage
为 a TextMessage
,而只是想将 the 中的字节数组转换BytesMessage
为 a 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
每次循环都需要不同的消息。
推荐阅读
- spring-boot - Spring Data JDBC 使用 Boot 2.3.0 生成错误的 HSQLDB 查询
- python - 如何将列表和字典转换为字节?
- java - android studio app的Openfire MAC问题集java_home
- r - 根据 R 中其他的值在数据框中插入零
- vue.js - Nuxt.js 构建失败
- javascript - 图片没有显示在导航栏中?网站还没上线,在编辑器里
- python - KeyError Traceback(最近一次调用最后一次):Panda 数据框,url 作为变量
- python - Python枚举元使打字模块崩溃
- php - 如何修复 admin-post.php 调用中的空白页面?
- django - django 频道在组用户之间共享实例变量