Kevin Burton created AMQ-5562:
---------------------------------
Summary: Anonymous producers do not raise
ActiveMQ.Advisory.Producer.Queue.> advisory
Key: AMQ-5562
URL: https://issues.apache.org/jira/browse/AMQ-5562
Project: ActiveMQ
Issue Type: Bug
Reporter: Kevin Burton
If I send to a producer with:
MessageProducer producer = session.createProducer( dest );
producer.send( message );
That works and I receive the advisory.
However, if send like this:
MessageProducer producer = session.createProducer( null );
producer.send( dest, message );
The advisory isn’t raised. I have a unit test to confirm that the message was
delivered to the queue and that it fails to raise the advisory.
The problem is that the second method is about 5x faster than the first.
I can certainly rewrite my code, but this could lead to bugs where code expects
to receive the advisory notice but now there’s a back door to send messages
without the advisory message meaning that you could break production code.
On the list, Timothy Bish noted:
> This is by design as the second case creates an anonymous producer that can
> send to any destination that it has permission to write to. Sending that
> advisory every time an anonymous producer sent a message to a given
> destination would create a flood of advisories which would not really be of
> help.
However:
> I mean I can create the flood of advisories now anyway. I just have to
> manually create a non-anonymous producer and it would then send the same
> number of advisories.
> Now it’s just slower and you’ve put a burden on me to maintain an LRU cache
> and expiry so that I can have reasonable performance :-(
I think this is a bug. If you're experiencing floods you can always turn off
advisories or be more specific in which queues you would like notifications
about.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)