Hi If this is occurring, it sounds like a bug.
This is a community project, so if you are able to create a unit test case that replicates the issue, it certainly help the community to validate if it is a bug or not, and also validate any fix the community may do. if you look here, for current tests, and use these as a basis for your test https://github.com/apache/activemq-artemis/tree/master/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration Once you have that, if you create a JIRA with the test attached, it would help. Best Mike > On 6 Jun 2019, at 22:05, bob.sandif...@sirsidynix.com wrote: > > I have an ActiveMQ server set up where I have multiple (and unbounded) queues > which differ only in the last component. e.g. myqueue.1, myqueue.2, > myqueue.4, etc. The last component is from a database that will have a > varying set of customers defined - and I want to set up one queue for each > customer. (I want a separate queue - the third party we're talking to needs > throttling at our 'customer' level. The address setting looks like this in > broker.xml: > > <address-setting match="myqueue.#"> > <dead-letter-address>myqueue.DLQ</dead-letter-address> > <expiry-address>myqueue.ExpiryQueue</expiry-address> > <redelivery-delay>500</redelivery-delay> > > <max-size-bytes>-1</max-size-bytes> > > <message-counter-history-day-limit>10</message-counter-history-day-limit> > <address-full-policy>PAGE</address-full-policy> > <auto-create-queues>true</auto-create-queues> > <auto-create-addresses>true</auto-create-addresses> > <auto-create-jms-queues>true</auto-create-jms-queues> > <auto-create-jms-topics>true</auto-create-jms-topics> > <max-delivery-attempts>3</max-delivery-attempts> > </address-setting> > > I have a producer that creates the queue name based on the customer key, and > uses JmsMessagingTemplate.convertAndSent(queueName, message). > > I have a consumer annotated like this: > > @JmsListener(destination = "myqueue.#", containerFactory = > "throttledLongCodeFactory") > public void processLongCodeMessage1(Session session, > Message<MessageRequest> message) throws JMSException { > ... do the message handling - no ActiveMQ accesses in here... > session.commit(); > } > > FWIW, here's the code for the throttledLongCodeFactory: > > @Bean > public DefaultJmsListenerContainerFactory throttledLongCodeFactory( > DefaultJmsListenerContainerFactoryConfigurer configurer) { > > ActiveMQConnectionFactory connectionFactory = > createActiveMQConnectionFactory(); > > Integer maxConsumerRate = > appProperties.getArtemis().getLongCode().getMaxConsumerRate(); > > // For throttling. Used to limit the number of messages a consumer > will handle per second. Default is -1. > if (maxConsumerRate != null) { > connectionFactory.setConsumerMaxRate(maxConsumerRate); > } > > DefaultJmsListenerContainerFactory factory = new > DefaultJmsListenerContainerFactory(); > // This provides all boot's default to this factory, including the > message converter > configurer.configure(factory, connectionFactory); > > return factory; > } > > What I'm finding in looking at the ActiveMQ Management Console is that the > consumer ACK's are going to a (new) queue "myqueue.#" (i.e. literally has > the '#' in the name), rather than the actual source queue for each message. > In the consumer, I can see the actual source queue name (e.g. "myqueue.2") > by inspecting the ClientMessageImpl field 'address'. > > What I'd like is for the ACK's to go to the source queue. the way it is, my > specific queues are just building up the number of messages they contain, > which isn't doing the Artemis server memory any good. > > Any thoughts on how to make this work? > > thanks! > > > > > > -- > Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html