Hi there,

I'm still working on my reimplementation of an AMQP 1.0 client in Rust. I
have implemented all the bits that are required to send a message to my
target application, but I'm having trouble attaching to the second link
that is supposed to be used to receive the responses to the messages. I'm
using Artemis 2.6.2 here (I know this is a bit dated -- that's what comes
with the vendor application).

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 new 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 have to admit to
being confused about the distinction between address and queue in
initialise(), so I also tried with
"<receive-queue-name>::<receive-queue-name>" as the source address to see
if I could trigger a different code path in initialise(). This results in a
QUEUE_DOES_NOT_EXIST error.

This is my attach message:

[0, 0, 0, 133, 2, 0, 0, 0, 0, 83, 18, 208, 0, 0, 0, 117, 0, 0, 0, 14, 161,
37, 114, 112, 99, 46, 99, 108, 105, 101, 110, 116, 46, 118, 120, 100, 105,
114, 46, 49, 50, 53, 52, 50, 57, 54, 53, 55, 53, 55, 48, 52, 57, 48, 48,
56, 51, 52, 48, 82, 1, 65, 64, 64, 0, 83, 40, 208, 0, 0, 0, 53, 0, 0, 0,
11, 161, 37, 114, 112, 99, 46, 99, 108, 105, 101, 110, 116, 46, 118, 120,
100, 105, 114, 46, 49, 50, 53, 52, 50, 57, 54, 53, 55, 53, 55, 48, 52, 57,
48, 48, 56, 51, 52, 48, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64]

Thanks in advance,

Dirkjan

Reply via email to