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