[
https://issues.apache.org/jira/browse/ARTEMIS-2605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17024221#comment-17024221
]
Dirkjan commented on ARTEMIS-2605:
----------------------------------
So would it be acceptable to make changes to Artemis that would allow implicit
queue creation on AMQP attach, if that is what some other servers already do?
Given that my use case involves creating a queue that does not need to be
durable, what do you advise me to do? I think the out of band solution would
pretty much come down to using the Artemis Core protocol, which as I understand
it isn't documented at all (and my stack doesn't live on the JVM, so using the
Artemis/Proton libraries wouldn't work so well).
> 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)