Source and Target properties exposed by Link (sender and receiver) class

Jun 15, 2014 at 1:52 PM

I tried to use new SenderLink constructor with Target parameter to set "Dynamic" property to true.
Using ActiveMQ as broker, it creates a temporary queue and the "attach" message received is the following :

[03:21.162] RECV (ch=0) attach(name:send-link,handle:0,role:True,snd-settle-mode:2,rcv-settle-mode:0,source:source(),target:target(address:temp-queue://ID:ppatierno-pc-60250-1402835000272-4:8:0,durable:0,expiry-policy:session-end,timeout:0,dynamic:True))

The dynamically created queue as an address and all related properties. However this properties aren't accessible from SenderLink object instance.

I think that could be useful to expose Target (and Source) of a Link (SenderLink and ReceiverLink) to know at runtime all related properties that should be readonly.

What do you think about that ?

Last note, the same operation doesn't work with Service Bus that returns immediately a "close" performative as follow :

[03:31.281] RECV (ch=0) close(error:error(condition:amqp:internal-error,description:Object reference not set to an instance of an object.,fields:[exception:System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.ApplicationServer.Messaging.Broker.Amqp.AmqpExtensions.IsCbsLink(Attach attach) in d:\bt\118971\private\source\ServiceBus\Service\Messaging\Microsoft.ApplicationServer.Messaging.Broker\Amqp\AmqpExtensions.cs:line 18
at Microsoft.Cloud.ServiceBus.Gateway.Runtime.AmqpGatewaySession.TryHandleCbsFrame(Frame frame) in d:\bt\118971\private\source\ServiceBus\Service\Messaging\Microsoft.Cloud.ServiceBus.Messaging\Amqp\AmqpGatewaySession.cs:line 182
at Microsoft.Cloud.ServiceBus.Gateway.Runtime.AmqpGatewaySession.ProcessFrame(Frame frame) in d:\bt\118971\private\source\ServiceBus\Service\Messaging\Microsoft.Cloud.ServiceBus.Messaging\Amqp\AmqpGatewaySession.cs:line 104
at Microsoft.ServiceBus.Messaging.Amqp.AmqpConnection.OnReceiveSessionFrame(Frame frame) in d:\bt\118971\private\source\ServiceBus\Clients\Microsoft.ServiceBus.Messaging\Messaging\Amqp\AmqpConnection.cs:line 487
at Microsoft.ServiceBus.Messaging.Amqp.AmqpConnection.OnFrameBuffer(ByteBuffer buffer) in d:\bt\118971\private\source\ServiceBus\Clients\Microsoft.ServiceBus.Messaging\Messaging\Amqp\AmqpConnection.cs:line 245
at Microsoft.ServiceBus.Messaging.Amqp.AmqpConnectionBase.OnReceiveFrameBuffer(ByteBuffer buffer) in d:\bt\118971\private\source\ServiceBus\Clients\Microsoft.ServiceBus.Messaging\Messaging\Amqp\AmqpConnectionBase.cs:line 147]))

Doesn't Service Bus support dynamically created entities ?

Jun 16, 2014 at 4:57 PM
Yes, I agree that exposing some of the broker-generated properties is required. For example, in case of request/response using a temp queue, the client needs to know the temp node created by the broker. This library is designed to work also on NETMF, so we tried not to keep anything in memory unnecessarily. Let me work on solution to expose those properties without introducing more memory overhead.

The Service Bus currently does not support dynamic nodes. It should have returned a detach frame with "not-implemented" error, but due to a bug it is returning close with the above error. We are fixing this bug so the correct error is returned.


Jun 17, 2014 at 10:11 AM
I'm happy to know that you agree with me.

Until now how you are evaluating the library memory footprint ?

Sep 5, 2014 at 7:07 AM
Now this feature is available !
Thanks !