I am using Artemis 2.7.0.redhat-00056 (AMQ 5.11 I think)
One of the camel routes was set up ages ago. It sends XML on a queue, which is then handled in a bean.
So it uses JMS style code:
producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
...
TextMessage message = session.createTextMessage(xStream.toXML(corMessage));
producer.send(message);
This works 99% of the time, but today we started getting:
Caused by: java.lang.IndexOutOfBoundsException: Error reading in simpleString, length=6702096 is greater than readableBytes=963134
at org.apache.activemq.artemis.api.core.SimpleString.readSimpleString(SimpleString.java:183)
In addition to this, the warning:
AMQ212054: Destination address=... is blocked. If the system is configured to block make sure you consume messages on this configuration.
To fix this, I went into the docker and checked out our /amq/broker/data/large-messages folder, and moved all those files somewhere else. It threw a bunch of exceptions, but new messages seem to be going through now.
But I am still getting the AMQ212054 'destination blocked' warning.
So, how do I
a) get rid of the warning
b) fix this going forward?
I have looked at the docs, but I don't see anything in particular that would help. There's a minLargeMessageSize
field, but would setting it make any difference? Then would I be checking the size of the XML before sending, and then have some if/else statement, to either send with producer.send(message);
or as a ByteMessage, like section 9.4/9.5, if it's a 'large' message?
EDIT: (FROM INSIDE DOCKER)
...
<max-disk-usage>90</max-disk-usage>
...
[root@409a74d7eadd /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/docker-253:2-268789825-123 10G 2.8G 7.3G 28% /
tmpfs 64M 0 64M 0% /dev
tmpfs 12G 0 12G 0% /sys/fs/cgroup
/dev/mapper/centos-root 36G 14G 23G 37% /temp