A few current WAMP/Crossbar.io (0.9.12) functionality questions...

#1

Hi,

I’ve been continuing to work my way through the WAMP Advanced Router spec and test for the existence of various features in Crossbar.io 0.9.12 that we would like to take advantage of in our IoT project. I’ve managed to find a few things in the spec that appear not to be implemented yet. (The first one, ticket-based authentication, did make it into 0.9.12, for which I/we are very grateful! :^) ) Others are listed below. Could someone confirm and maybe speak to their “rough expected implementation timeframe” so we know which things we might need to implement ourselves (at least for now) in our application? Our development timeframe is probably 12-18 months.

  1. “Prefix”-based subscriptions - being able to subscribe to topic “a.b.c” and automatically receive events published to topics like “a.b.c.d”, “a.b.c.d.e”, etc.

  2. WAMP reflection procedures, e.g. “wamp.reflection.procedure.list”, etc.

  3. Some kind of discovery/registration mechanism by endpoints with the router. This might better be a function of the application, not the router/WAMP protocol itself. I think I did see some sort of discussion elsewhere in the forum here about this idea but now I can’t find it.

Can I also ask a question about WAMP topics? We are thinking of designing things such that a particular RPC call would 1) input a command into our IoT device, and 2) create/subscribe to a new topic so that the command initiating client could receive notifications about the progress of the command. My question is, if we were to create a unique topic for each command, does the router internally clean up of the (aged) topics once no one is (explicitly) subscribed to them? I’m simply concerned about memory usage for topics increasing over time.

Thanks for any confirmation/information!

Dave

0 Likes

#2

Hi Dave,

> listed below. Could someone confirm and maybe speak to their "rough

expected implementation timeframe" so we know which things we might need
to implement ourselves (at least for now) in our application? Our
development timeframe is probably 12-18 months.

1) "Prefix"-based subscriptions - being able to subscribe to topic
"a.b.c" and automatically receive events published to topics like
"a.b.c.d", "a.b.c.d.e", etc.

The feature is clearly defined and will be implemented soon in Crossbar.io

2) WAMP reflection procedures, e.g. "wamp.reflection.procedure.list", etc.

"Reflection" is not yet fully defined/designed, but we will have something here soon too. Within Crossbar.io, we already have

CrossbarRouterServiceSession

https://github.com/crossbario/crossbar/blob/master/crossbar/crossbar/router/session.py#L551

which will be the basis to implement such meta services.

3) Some kind of discovery/registration mechanism by endpoints with the
router. This might better be a function of the application, not the
router/WAMP protocol itself. I think I did see some sort of discussion
elsewhere in the forum here about this idea but now I can't find it.

Service registration/dicovery/activation: this area is still in "contemplating" / collecting ideas phase.

My gut tells me: this is important piece of the puzzle, but we might need to gain more experience first with real-world scenarios to come up with something robust.

If you want, you can help:

collect the infos, comments, opinions etc touching this topic from the mailing list, plus the issues on the WAMP repo probably by linking from a new Wiki page

https://github.com/tavendo/WAMP/wiki

Also add pointers to previous art (like what did the SOA guys do) etc.

Then try to distill it into some coherent design / thinking on that Wiki page.

Can I also ask a question about WAMP topics? We are thinking of
designing things such that a particular RPC call would 1) input a
command into our IoT device, and 2) create/subscribe to a new topic so
that the command initiating client could receive notifications about the
progress of the command. My question is, if we were to create a unique

FWIW, you don't need ephemeral/throw-away topics to report progress on an RPC.

WAMP AP (and Crossbar.io) has _progressive results_:

https://github.com/tavendo/AutobahnPython/blob/master/examples/twisted/wamp/basic/rpc/progress/backend.py#L37

topic for each command, does the router internally clean up of the
(aged) topics once no one is (explicitly) subscribed to them? I'm simply

Yes, Crossbar.io does clean up data structures when the last subscriber on some topic unsubs/leaves.

concerned about memory usage for topics increasing over time.

In general, this is a valid concern: memory leaks / months of uptime. I do think we have a solid code base. But that's just opinion. FWIW, we are currently preparing a performance/stability test set for Crossbar.io - mainly to get ready for adding clustering to the routing core.

Cheers,
/Tobias

···

Thanks for any confirmation/information!

Dave

--
You received this message because you are subscribed to the Google
Groups "Autobahn" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to autobahnws+...@googlegroups.com
<mailto:autobahnws+...@googlegroups.com>.
To post to this group, send email to autob...@googlegroups.com
<mailto:autob...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/autobahnws/1c80679a-ecf5-4903-9c76-8c2e5c27b43a%40googlegroups.com
<https://groups.google.com/d/msgid/autobahnws/1c80679a-ecf5-4903-9c76-8c2e5c27b43a%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

0 Likes

#3

Hi Tobias,

Looks like it soon might be time for another beer…! ;^)

  1. “Prefix”-based subscriptions - being able to subscribe to topic

“a.b.c” and automatically receive events published to topics like

“a.b.c.d”, “a.b.c.d.e”, etc.

The feature is clearly defined and will be implemented soon in Crossbar.io

Awesome - thank you! Can’t wait.

“Reflection” is not yet fully defined/designed, but we will have
something here soon too. Within Crossbar.io, we already have

CrossbarRouterServiceSession

https://github.com/crossbario/crossbar/blob/master/crossbar/crossbar/router/session.py#L551

which will be the basis to implement such meta services.

Again, terrific. Again, can’t wait. :^)

  1. Some kind of discovery/registration mechanism by endpoints with the

router. This might better be a function of the application, not the

router/WAMP protocol itself. I think I did see some sort of discussion

elsewhere in the forum here about this idea but now I can’t find it.

Service registration/dicovery/activation: this area is still in
“contemplating” / collecting ideas phase.

My gut tells me: this is important piece of the puzzle, but we might
need to gain more experience first with real-world scenarios to come up
with something robust.

If you want, you can help:

collect the infos, comments, opinions etc touching this topic from the
mailing list, plus the issues on the WAMP repo probably by linking from
a new Wiki page

https://github.com/tavendo/WAMP/wiki

Also add pointers to previous art (like what did the SOA guys do) etc.

Then try to distill it into some coherent design / thinking on that Wiki
page.

I would love to if I can find time; I will see if I can. This concept seems fundamental to what we want to accomplish with our IoT devices coming online and automatically connecting to/registering with a centralized router. The reason I wonder if maybe it should remain an application config issue is that we want our IoT to be a WAMP client to the centralized router, yet host its own WAMP router to serve its own information to other clients. They’re related ideas, but seem like they should remain separate. Maybe there could be some kind of optional WAMP client configuration issue, where it requests to be discovered, and an optional WAMP (advanced) router feature to listen/receive that discovery request, and connect the client, etc.

Can I also ask a question about WAMP topics? We are thinking of

designing things such that a particular RPC call would 1) input a

command into our IoT device, and 2) create/subscribe to a new topic so

that the command initiating client could receive notifications about the

progress of the command. My question is, if we were to create a unique

FWIW, you don’t need ephemeral/throw-away topics to report progress on
an RPC.

WAMP AP (and Crossbar.io) has progressive results:

https://github.com/tavendo/AutobahnPython/blob/master/examples/twisted/wamp/basic/rpc/progress/backend.py#L37

This may be the best answer of all, since it’s already implemented and will be needed for just about every RPC call we will implement in our IoT device. When a client makes the RPC request, the receiving WAMP component has to interact with the rest of the IoT device system to deliver the request. This “progress” architecture seems ideal.

topic for each command, does the router internally clean up of the

(aged) topics once no one is (explicitly) subscribed to them? I’m simply

Yes, Crossbar.io does clean up data structures when the last subscriber
on some topic unsubs/leaves.

Terrific!

In general, this is a valid concern: memory leaks / months of uptime. I
do think we have a solid code base. But that’s just opinion. FWIW, we
are currently preparing a performance/stability test set for Crossbar.io

  • mainly to get ready for adding clustering to the routing core.

Honestly, I’ve really been nothing but impressed with Crossbar - both with what it already has (and its stability) and its potential!

Thanks as always for all the good information. Is there a mailing list to be able to get notified whenever new releases of Crossbar and Autobahn are available?

Dave

···

On Tuesday, December 30, 2014 4:36:38 AM UTC-5, Tobias Oberstein wrote:

0 Likes

#4

Thanks as always for all the good information. Is there a mailing list
to be able to get notified whenever new releases of Crossbar and
Autobahn are available?

Yep.

Autobahn releases are announced on the list here.

Crossbar.io releases are announced on the list here (due to historic reasons) and the Crossbar.io list:

https://groups.google.com/forum/#!forum/crossbario

/Tobias

0 Likes