activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Posta <christian.po...@gmail.com>
Subject Re: ActiveMQ.DLQ
Date Fri, 08 Nov 2013 18:04:45 GMT
Sure is :)

AbstractRegion.java#send():
does a lookup of the destination...

            final Destination regionDestination = lookup(context,
messageSend.getDestination(),false);


in AbstractRegion#lookup() you have this:

        if (dest == null) {
            if (isAutoCreateDestinations()) {
                // Try to auto create the destination... re-invoke broker
                // from the
                // top so that the proper security checks are performed.
                context.getBroker().addDestination(context,
destination, createTemporary);
                dest = addDestination(context, destination, false);
                // We should now have the dest created.
                destinationsLock.readLock().lock();
                try {
                    dest = destinations.get(destination);
                } finally {
                    destinationsLock.readLock().unlock();
                }
            }

            if (dest == null) {
                throw new JMSException("The destination " +
destination + " does not exist.");
            }
        }

On Fri, Nov 8, 2013 at 10:43 AM,  <barry.barnett@wellsfargo.com> wrote:
> So there must be some code written in the broker to dynamically create that queue then,
correct?  And other system type queues?
>
> Regards,
>
> Barry Barnett
> WMQ Enterprise Services & Solutions
> Wells Fargo
> Cell: 704-564-5501
>
>
> -----Original Message-----
> From: Christian Posta [mailto:christian.posta@gmail.com]
> Sent: Friday, November 08, 2013 12:21 PM
> To: users@activemq.apache.org
> Subject: Re: ActiveMQ.DLQ
>
> Well, it would be the same as a user-queue... ie.. if something tries to send to the
DLQ, it will be auto-created. So for example, when the broker checks for expiring messages
upon dispatch, if it finds any it will send them to the DLQ... if that queue, "ActiveMQ.DLQ"
is not already in the system (it's not on a fresh broker install, for example), then it will
be auto-created just like a user queue is.
>
> On Fri, Nov 8, 2013 at 9:26 AM,  <barry.barnett@wellsfargo.com> wrote:
>> After reading the wiki, I see the following:
>>
>> This means that a client can create a new Queue or Topic dynamically
>> either by calling createQueue() or createTopic() on a JMS Session
>> creating an instance of ActiveMQTopic or ActiveMQQueue and possibly
>> registering them in JNDI
>>
>> This still isn't telling me how ActiveMQ knows when to create the ActiveMQ.DLQ. 
Are you saying that the client would have to dynamically create it, or again, is it something
at the server side system config that's telling it to create a DLQ if messages cant be delivered,
expired, etc?
>>
>> Regards,
>>
>> Barry Barnett
>> WMQ Enterprise Services & Solutions
>>
>>
>> -----Original Message-----
>> From: Christian Posta [mailto:christian.posta@gmail.com]
>> Sent: Friday, November 08, 2013 9:57 AM
>> To: users@activemq.apache.org
>> Subject: Re: ActiveMQ.DLQ
>>
>> Nope :)
>>
>> http://activemq.apache.org/how-do-i-create-new-destinations.html
>>
>> But it's completely configurable.. ie, you can specify whether destinations should
be auto-created.. or you can use security to lockdown people from creating destinations on
demand... lots of ways to do it, but by default the destinations are auto-created as described
in the wiki above.
>>
>> If you want to have destinations created when the broker starts up, you could do
something like this in the activemq.xml file:
>>
>>  <broker xmlns="http://activemq.apache.org/schema/core">
>>
>>     <destinations>
>>
>>       <queue physicalName="FOO.BAR" />
>>
>>       <topic physicalName="SOME.TOPIC" />
>>
>>     </destinations>
>>
>>   </broker>
>>
>>
>> but it's not necessary....
>>
>> On Fri, Nov 8, 2013 at 5:58 AM,  <barry.barnett@wellsfargo.com> wrote:
>>> Thank you.  But doesn't it have to be in some configuration file somewhere so
that the broker knows how to create it when it's needed?  I don't see it in the activemq.xml
file.
>>>
>>> Regards,
>>>
>>> Barry Barnett
>>> WMQ Enterprise Services & Solutions
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: Christian Posta [mailto:christian.posta@gmail.com]
>>> Sent: Thursday, November 07, 2013 3:00 PM
>>> To: users@activemq.apache.org
>>> Subject: Re: ActiveMQ.DLQ
>>>
>>> Barry,
>>>
>>> ActiveMQ by default auto-creates destinations as it needs/requires them. You
don't have to define the DLQ explicitly. If a message goes to the ActiveMQ.DLQ, or if a consumer
listens to the ActiveMQ.DLQ queue, then the broker will create it.
>>>
>>> You can set up queues ahead of time if you'd like, but it's not necessary.
>>>
>>>
>>>
>>> On Thu, Nov 7, 2013 at 11:17 AM,  <barry.barnett@wellsfargo.com> wrote:
>>>> It is my understanding that expired messages are stored on the ActiveMQ.DLQ
queue.  When I start the ActiveMQ broker, I do not see the DLQ defined.  If this is where
the expired messages go to, wouldn't it be a default queue for the default configuration?
 If not, then do I need to define it using that exact name?  What other attributes would I
define the queue with?
>>>>
>>>> I don't see this queue in my activemq.xml file or any config file out of
the box...
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Barry Barnett
>>>> WMQ Enterprise Services & Solutions
>>>> W
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Christian Posta
>>> http://www.christianposta.com/blog
>>> twitter: @christianposta
>>
>>
>>
>> --
>> Christian Posta
>> http://www.christianposta.com/blog
>> twitter: @christianposta
>
>
>
> --
> Christian Posta
> http://www.christianposta.com/blog
> twitter: @christianposta



-- 
Christian Posta
http://www.christianposta.com/blog
twitter: @christianposta

Mime
View raw message