Bhavesh Kharwa
Bhavesh Kharwa

Reputation: 73

wildfly 14 : javax.jms.JMSException: AMQ119030: large-message not initialized on server

I have configured activemq subsystem in wildfly as below.

<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
         <server name="default" persistence-enabled="true">
                <cluster password="${jboss.messaging.cluster.password:CHANGE ME!!}"/>
                <journal type="NIO" min-files="2"/>
                <bindings-directory path="/opt/shared/messaging/live/bindings"/>
                <journal-directory path="/opt/shared/messaging/live/journal"/>
                <large-messages-directory path="/opt/shared/messaging/live/largemessages"/>
                <paging-directory path="/opt/messaging/live/paging"/>
                <security-setting name="#">
                    <role name="guest" send="true" consume="true" create-non-durable-queue="true" delete-non-durable-queue="true"/>
                </security-setting>
                <address-setting name="#" dead-letter-address="jms.queue.DLQ" expiry-address="jms.queue.ExpiryQueue" redelivery-delay="60000" max-delivery-attempts="5" max-size-bytes="50485760" page-size-bytes="10485760" address-full-policy="PAGE" redistribution-delay="1000"/>
                <http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/>
                <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput">
                    <param name="batch-delay" value="50"/>
                </http-connector>
                <in-vm-connector name="in-vm" server-id="0">
                    <param name="buffer-pooling" value="false"/>
                </in-vm-connector>
                <http-acceptor name="http-acceptor" http-listener="default"/>
                <http-acceptor name="http-acceptor-throughput" http-listener="default">
                    <param name="batch-delay" value="50"/>
                    <param name="direct-deliver" value="false"/>
                </http-acceptor>
                <in-vm-acceptor name="in-vm" server-id="0">
                    <param name="buffer-pooling" value="false"/>
                </in-vm-acceptor>
                <broadcast-group name="bg-group1" jgroups-cluster="activemq-cluster" connectors="http-connector"/>
                <discovery-group name="dg-group1" jgroups-cluster="activemq-cluster"/>
                <cluster-connection name="my-cluster" address="jms" connector-name="http-connector" discovery-group="dg-group1"/>
                <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
                <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
                <jms-queue name="TestQueue" entries="java:/jms/TestQueue java:jboss/exported/jms/TestQueue"/>
                <connection-factory name="InVmConnectionFactory" entries="java:/ConnectionFactory" connectors="in-vm"/>
                <connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector" ha="true" block-on-acknowledge="true" reconnect-attempts="-1"/>
                <pooled-connection-factory name="activemq-ra" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory" connectors="in-vm" transaction="xa"/>
            </server>
    </subsystem>

I lookup 'TestQueue' using java:/ConnectionFactory. Initially it is working fine but after some times it throws following exception:

1) Warning message:

AMQ212051: Invalid concurrent session usage. Sessions are not supposed to be used by more than one thread concurrently.: java.lang.Exception: trace
    at org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.startCall(ClientSessionImpl.java:1457)
    at org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.doSend(ClientProducerImpl.java:229)
    at org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:129)
    at org.apache.activemq.artemis.jms.client.ActiveMQMessageProducer.doSendx(ActiveMQMessageProducer.java:517)
    at org.apache.activemq.artemis.jms.client.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:201)
    at com.demo.Test.executeQuery(Test.java:296)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

2) Warning message:

AMQ212054: Destination address=jms.queue.TestQueue is blocked. If the system is configured to block make sure you consume messages on this configuration.

3) : configured shared directory in messaging-activemq subsystem but after processing couple of records still getting following error.

javax.jms.JMSException: AMQ119030: large-message not initialized on server
    at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.sendSessionSendContinuationMessage(ActiveMQSessionContext.java:924)
    at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.sendLargeMessageChunk(ActiveMQSessionContext.java:502)
    at org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.largeMessageSendStreamed(ClientProducerImpl.java:503)
    at org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.largeMessageSendBuffered(ClientProducerImpl.java:413)
    at org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.largeMessageSend(ClientProducerImpl.java:344)
    at org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.doSend(ClientProducerImpl.java:274)

Upvotes: 0

Views: 1495

Answers (1)

Justin Bertram
Justin Bertram

Reputation: 35038

A big problem is listed in step #1:

AMQ212051: Invalid concurrent session usage. Sessions are not supposed to be used by more than one thread concurrently.

Concurrent session usage will cause all sorts of weird problems. You need to fix your application so that sessions are not used concurrently. Concurrent session usage is not supported by the JMS specification and is considered an application programming error.

The broker is also blocking:

AMQ212054: Destination address=jms.queue.SearchRequestsQueue is blocked. If the system is configured to block make sure you consume messages on this configuration.

There are multiple reasons that the broker might block messages from being sent to an address:

  1. If the <address-full-policy> is BLOCK and the address has reached the configured <max-size-bytes>.
  2. If the <address-full-policy> is BLOCK and the <global-max-size> for all addresses is reached.
  3. If the <max-disk-usage> is reached.

It's not clear to me which is causing this problem since you have PAGE configured. The global-max-size is -1 by default and max-disk-usage is 100 by default. Perhaps your disk is reporting 100% utilization?

Upvotes: 2

Related Questions