如何从ActiveMQServerMessagePlugin afterSend方法拦截的消息中获取消息体
How to get message body from message intercepted by ActiveMQServerMessagePlugin afterSend method
我通过public void afterSend(ServerSession session, Transaction tx, Message message, boolean direct, boolean noAutoCreateQueue, RoutingStatus result) throws ActiveMQException
方法截取消息。如何获取消息正文?我尝试通过 ((CoreMessage) message).getBodyBuffer().readUTF()
获得正文,但得到 Method threw 'java.lang.IndexOutOfBoundsException' exception
。在调试器 body = null 中,但发送的消息具有 String 主体。
首先要注意的是 org.apache.activemq.artemis.api.core.Message#getBodyBuffer
已弃用,不应使用。
如果您的消息是使用核心 JMS 客户端发送的,并且是作为 javax.jms.TextMessage
发送的,那么您可以使用 org.apache.activemq.artemis.api.core.Message#getStringBody
将基础字节数组解码为 String
。
我通过public void afterSend(ServerSession session, Transaction tx, Message message, boolean direct, boolean noAutoCreateQueue, RoutingStatus result) throws ActiveMQException
方法截取消息。如何获取消息正文?我尝试通过 ((CoreMessage) message).getBodyBuffer().readUTF()
获得正文,但得到 Method threw 'java.lang.IndexOutOfBoundsException' exception
。在调试器 body = null 中,但发送的消息具有 String 主体。
首先要注意的是 org.apache.activemq.artemis.api.core.Message#getBodyBuffer
已弃用,不应使用。
如果您的消息是使用核心 JMS 客户端发送的,并且是作为 javax.jms.TextMessage
发送的,那么您可以使用 org.apache.activemq.artemis.api.core.Message#getStringBody
将基础字节数组解码为 String
。