You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Robbie Gemmell (Jira)" <ji...@apache.org> on 2020/01/24 11:49:00 UTC

[jira] [Commented] (ARTEMIS-2605) Unable to create non-durable queue with specific name

    [ 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)