Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中MessageNotReadableException的解决方法_Java_Jms - Fatal编程技术网

Java中MessageNotReadableException的解决方法

Java中MessageNotReadableException的解决方法,java,jms,Java,Jms,我正在为我的一个项目围绕JMS api构建一个小api。本质上,我们正在构建处理连接逻辑的代码,并通过提供类似Client.send(String message)的方法简化消息发布 目前正在讨论的一个想法是,我们为用户提供了一种将拦截器连接到此客户端的方法。我们将在准备JMS消息之后和发布它之前应用拦截器 例如,如果我们想给一条消息加时间戳,并为此编写一个拦截器,那么我们将这样应用它 ...some code ... Message message = session.createMessa

我正在为我的一个项目围绕JMS api构建一个小api。本质上,我们正在构建处理连接逻辑的代码,并通过提供类似Client.send(String message)的方法简化消息发布

目前正在讨论的一个想法是,我们为用户提供了一种将拦截器连接到此客户端的方法。我们将在准备JMS消息之后和发布它之前应用拦截器

例如,如果我们想给一条消息加时间戳,并为此编写一个拦截器,那么我们将这样应用它

...some code ...

Message message = session.createMessage()

..do all the current processing on the message and set the body

for(interceptor:listOfInterceptors){
   interceptor.apply(message)
}
我们想到的一个输入接收器是压缩消息体。但是当我们试图在拦截器中读取消息体时,我们得到了一个MessageNotReadableException。在过去,我通常在将内容设置为消息正文之前对其进行压缩,因此不必担心这种异常


有没有办法绕过此异常?

您的JMS客户端似乎试图读取一条只写消息。您的拦截器无法以这种方式工作,请详细说明您之前是如何压缩消息的

我们之前所做的是获取消息,将其转换为字节,然后使用java压缩库对其进行压缩,并将压缩的字节设置为ByteMessage的主体。现在,我们想尝试这个拦截器,将消息体设置为文本,并可选地启用拦截器,它将为我们压缩消息体。