Wildfly 10 aretmis activemq seems to be throttling the producer
dkjeldgaard Apr 13, 2017 1:49 PMI am running into an issue where activemq in wildfly 10 seems to run well for some time. After several hours our producers seem to be slowed down artificially like they are being throttled by artemis activemq. We have several different java clients that run in sequence and produce messages that are sent to various queues. The first time we run them they seem to run quickly and load up the queues quickly, which is the desired behavior. If we run the same programs several hours later it takes way too long for the programs (producers) to send the messages to the queues. In this scenario the consumers are processing the messages way faster than the consumer is producing them so we have consumers that are starving. Our goal is for our producer to send an unlimited number of messages to the queue (limited only by physical disk space for paging). This way our consumers (MDBs) can consume them as quickly as they possibly can.
It seems as though artemis activemq is throttling the message producer somehow. Any help with this would be greatly appreciated. Here is our messaging configuration in wildfly 10.
<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"> <server name="default"> <security enabled="false"/> <cluster password="${jboss.messaging.cluster.password:defaultPWD}"/> <security-setting name="#"> <role name="guest" send="true" consume="true" create-non-durable-queue="true" delete-non-durable-queue="true"/> <role name="bpc" 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="5000" max-delivery-attempts="5"/> <address-setting name="jms.queue.BPCLoggingQueue" dead-letter-address="jms.queue.DLQ" expiry-address="jms.queue.ExpiryQueue" max-delivery-attempts="1"/> <address-setting name="jms.queue.PASNettingProcessorQueue" max-delivery-attempts="1"/> <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"/> <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"/> <broadcast-group name="bg-group1" jgroups-channel="activemq-cluster" connectors="http-connector"/> <discovery-group name="dg-group1" jgroups-channel="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="AMSBatchPosterQueue" entries="java:jboss/exported/jms/queue/AMSBatchPosterQueue" durable="false"/> <jms-queue name="AMSIntradayPosterQueue" entries="java:jboss/exported/jms/queue/AMSIntradayPosterQueue" durable="false"/> <jms-queue name="PASBatchActivityPosterQueue" entries="java:jboss/exported/jms/queue/PASBatchActivityPosterQueue" durable="false"/> <jms-queue name="PASIntradayActivityPosterQueue" entries="java:jboss/exported/jms/queue/PASIntradayActivityPosterQueue" durable="false"/> <jms-queue name="PASPositionReconProcessorQueue" entries="java:jboss/exported/jms/queue/PASPositionReconProcessorQueue" durable="false"/> <jms-queue name="DLQ" entries="java:/jboss/exported/jms/queue/DLQ" durable="false"/> <jms-queue name="AMSAccountDataPosterQueue" entries="java:jboss/exported/jms/queue/AMSAccountDataPosterQueue" durable="false"/> <jms-queue name="PASAccountDataPosterQueue" entries="java:jboss/exported/jms/queue/PASAccountDataPosterQueue" durable="false"/> <jms-queue name="PASSATBProcessorQueue" entries="java:jboss/exported/jms/queue/PASSATBProcessorQueue" durable="false"/> <jms-queue name="PASSecurityDataPosterQueue" entries="java:jboss/exported/jms/queue/PASSecurityDataPosterQueue" durable="false"/> <jms-queue name="BPCLoggingQueue" entries="java:jboss/exported/jms/queue/BPCLoggingQueue" durable="false"/> <jms-queue name="PASExternalSublotImportQueue" entries="java:jboss/exported/jms/queue/PASExternalSublotImportQueue" durable="false"/> <jms-queue name="PASLotDeltaProcessorQueue" entries="java:jboss/exported/jms/queue/PASLotDeltaProcessorQueue" durable="false"/> <jms-queue name="PASLotReconProcessorQueue" entries="java:jboss/exported/jms/queue/PASLotReconProcessorQueue" durable="false"/> <jms-queue name="PortfolioDataPosterQueue" entries="java:jboss/exported/jms/queue/PortfolioDataPosterQueue" durable="false"/> <jms-queue name="PASBaselineProcessorQueue" entries="java:jboss/exported/jms/queue/PASBaselineProcessorQueue" durable="false"/> <jms-queue name="PASSerialNettingAccountProcessorQueue" entries="java:jboss/exported/jms/queue/PASSerialNettingAccountProcessorQueue" durable="false"/> <jms-queue name="PASNettingProcessorQueue" entries="java:jboss/exported/jms/queue/PASNettingProcessorQueue" durable="false"/> <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" min-large-message-size="1024" 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>