I see your struggle. Is the thing you want to observe something else than the last published value? If not, then it may be the lvc plugin that needs improvements, not the coap-pubsub plugin. If there was a last value cache accessible via CoAP for every exchange type (both standard and all custom ones) would this solve your concern?
Sent: Saturday, December 19, 2015 13:49
To:
rabbitm...@googlegroups.com
Subject: Re: [rabbitmq-users] RabbitMQ COAP plugin (experimental)
I agree it needs discussion - and thanks for work you have done!
In general, we would be placing services - some complex - in our servers to respond to requests and facilitate side effects such as persistence and analysis. The LVC is suitable for a subset of requirements, but inconvenient for complex services as well as hindering interoperability IMHO.
We would be utilizing the 'observe' functionality of COAP (RFC 7641) for 'push' to clients, and in that sense we are concerned about messaging.
Overall, we would like to experiment with a suite of protocols (AMQP, MQTT, COAP, STOMP, ...) and establish interoperability amongst them as needed with a set of internal services and standards.
Hence a COAP client observing an endpoint might receive a sequence of representations as a result of actions by clients using other protocols.
To enable this, it's easier if the protocol implementations in RabbitMQ use interoperable approaches.
For example: each client has a queue, there is a single topic exchange for the service, bindings are dynamic, etc.
Using this example it would be quite easy to build simple internal services, implementing internal standards, to transform messages among the protocol implementations and facilitate common services using multiple protocols - we already do this with MQTT and AMQP.
But perhaps there are other approaches as well :)
Cheers,
ml
On Sat, Dec 19, 2015 at 5:40 AM, Gotthard, Petr <
Petr.G...@konicaminolta.cz<mailto:
Petr.G...@konicaminolta.cz>> wrote:
Hello.
This deserves thorough discussion. The protocols are very different. MQTT is designed for messaging, whereas CoAP is for accessing resources. CoAP operations are required to be idempotent: a resource can be read multiple times, storing a resource that has been stored before has no effect. MQTT and messaging in general is dealing with events rather than resources. Publishing a message that has been published will publish it again, message consumption is a destructive operation. Is is not idempotent.
To implement a CoAP access to a messaging broker one has to defime what will be the resource being accessed. There are multiple options depending on what you want to achieve. In my implementation CoAP is used to access the LVC cache. The cache entries are the resources. This nicely blends messaging with the REST paradigm, but as you pointed out it requires the lvc exchange. Since the coap-pubsub plugin uses a generic CoAP implementation it is very easy to do anothet plugin that will use CoAP to access some other resources. Do you have something specific in mind you want to access via CoAP?
One could think of accessing message queues via CoAP. This is similar to the recurring discusions on this list on how to use HTTP to consume messages. It is a tricky subject because CoAP operations are assumed to be idempotent. One could use CoAP GET to non-destructively read a message, but what shall CoAP PUT do? Remember that PUT-ing a resource that is already there shall have no effect.
I dont think there is a single obvious solution for CoAP support in Rabbit. I just implemented one possible option and I was hoping to learn about other pepople needs and use-cases.
Best Regards,
Petr
________________________________________
From:
rabbitm...@googlegroups.com<mailto:
rabbitm...@googlegroups.com> [
rabbitm...@googlegroups.com<mailto:
rabbitm...@googlegroups.com>] on behalf of Laing, Michael [
michae...@nytimes.com<mailto:
michae...@nytimes.com>]
Sent: Saturday, December 19, 2015 02:02
To:
rabbitm...@googlegroups.com<mailto:
rabbitm...@googlegroups.com>
Subject: [rabbitmq-users] RabbitMQ COAP plugin (experimental)
The gotthardp COAP implementation would be more useful if it used bindings on a common topic exchange rather than distinct exchanges for topics. The current COAP implementation makes it difficult to interoperate with the RabbitMQ MQTT implementation, a desirable goal IMHO.
ml
https://github.com/rabbitmq/rabbitmq-server/issues/89
https://github.com/gotthardp/rabbitmq-coap-pubsub
--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
rabbitmq-user...@googlegroups.com<mailto:
rabbitmq-users%2Bunsu...@googlegroups.com><mailto:
rabbitmq-user...@googlegroups.com<mailto:
rabbitmq-users%2Bunsu...@googlegroups.com>>.
To post to this group, send email to
rabbitm...@googlegroups.com<mailto:
rabbitm...@googlegroups.com><mailto:
rabbitm...@googlegroups.com<mailto:
rabbitm...@googlegroups.com>>.
To unsubscribe from this group and stop receiving emails from it, send an email to
rabbitmq-user...@googlegroups.com<mailto:
rabbitmq-users%2Bunsu...@googlegroups.com>.
To post to this group, send an email to
rabbitm...@googlegroups.com<mailto:
rabbitm...@googlegroups.com>.