JMS objects are shared between consumers in JBossMessaging

Solution Unverified - Updated -

Issue

  • The code in our application has a clustered JMS queue where the only type of message being sent is a StreamMessage with a single long value in its payload, created roughly as follows:
        StreamMessage msg = queueSession.createStreamMessage();
        msg.writeLong(somevalue);
        queueSender.send(msg);
  • The MDB that receives on the queue does this in its onMessage(Message msg) method:

    long myvalue = ((StreamMessage)msg).readLong();
    

It works most of the time. But once in awhile (about 5%) a MessageEOFException is thrown out of readLong:

javax.jms.MessageEOFException:
        at org.jboss.jms.message.JBossStreamMessage.readLong(JBossStreamMessage.java:356)
        at org.jboss.jms.message.StreamMessageProxy.readLong(StreamMessageProxy.java:112)
        at aaa.bbb.ProcessExitProcessorBean.onMessage(ProcessExitProcessorBean.java:236)
        ...

Environment

  • JBoss Enterprise Application Platform (EAP)
    • 4.3
    • 5.x

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content