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

53 views
Skip to first unread message

Dave Barndt

unread,
Dec 25, 2014, 4:45:12 PM12/25/14
to autob...@googlegroups.com
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

Tobias Oberstein

unread,
Dec 30, 2014, 4:36:38 AM12/30/14
to autob...@googlegroups.com
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.

Dave Barndt

unread,
Dec 30, 2014, 5:14:50 PM12/30/14
to autob...@googlegroups.com
Hi Tobias,

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


On Tuesday, December 30, 2014 4:36:38 AM UTC-5, Tobias Oberstein wrote:
> 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. :^)
 
> 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.

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

Tobias Oberstein

unread,
Dec 31, 2014, 5:19:24 AM12/31/14
to autob...@googlegroups.com
> 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
Reply all
Reply to author
Forward
0 new messages