[ 
https://issues.apache.org/jira/browse/ARTEMIS-2605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17022884#comment-17022884
 ] 

Robbie Gemmell commented on ARTEMIS-2605:
-----------------------------------------

Terminus durability isnt the same thing as queue/node durability, so you aren't 
'specifying a non-durable queue'. The AMQP 1.0 spec is primarily about point to 
point transfer of messages to/from nodes with a given address, e.g the name of 
a queue. It doesn't cover node creation other than via the dynamic node 
mechanism, and leaves that to out of band consideration, e.g management (which 
can itself often be conducted using messages to management bits, which I 
believe Artemis supports in addition to other management options, but I havent 
tried that personally) or some servers undertake it when links attach, either 
implicitly or through using explicit configuration to govern it.

> Unable to create non-durable queue with specific name
> -----------------------------------------------------
>
>                 Key: ARTEMIS-2605
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2605
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: AMQP
>    Affects Versions: 2.6.2
>            Reporter: Dirkjan
>            Priority: Major
>
> When attaching as a receiver to create a new queue, it appears Artemis will 
> try to create a durable queue by default, even if I specify that the queue 
> should not be durable. If my user does not have permission to create durable 
> queues (even though it has permission to create non-durable queues), creation 
> of the queue will fail with a permission error.
> More context:
> The application I'm targeting usually uses Core messages to do RPC, but it 
> accepts AMQP messages as well, so it could be that there is a mismatch here 
> between how things are set up.
>  
> When using Core, I see that ServerSessionPacketHandler triggers on a packet 
> with type -12 to create the queue with a well-defined name, which in the end 
> dispatches to ServerSessionImpl.createQueue() with temporary = true and 
> durable = false. This is the behavior I'm seeking to replicate. However, all 
> my attempts to create to a temporary non-durable queue by attaching to it 
> with AMQP seem to be failing so far.
>  
> With my AMQP client, I try to create the response queue by attaching to it 
> with source address = <receive-queue-name>. This lets me end up in 
> ProtonServerSenderContext.initialise() by way of 
> AMQPSessionContext.addSender(). However, this throws a permission error 
> (AMQ119213, my user does not have permission for CREATE_DURABLE_QUEUE). This 
> is surprising to me because I leave the "durable" field as default, which 
> should mean to default to no durability. It seems to happen because 
> AMQPSessionCallback.queueQuery() calls (through some indirection) 
> ServerSessionImpl.createQueue() with durable = true.
>  
> I could potentially create non-durable queues by setting dynamic = true, but 
> in that case Artemis will create the queue with random UUID name, whereas my 
> user only has permission to create queues with a name with a specific prefix.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to