Does APIGEE support the MQTT IoT Protocol? - apigee

Does the APIGEE framework support communications bi-directional with MQTT protocol?
We are looking to manage devices via APIGEE.

Unfortunately, this protocol is not supported at this time. If there is enough demand, it can be considered as a possible enhancement.

From kevinswiber # community.apigee.com, Feb 24, 2015:
Apigee Edge's programmability model should allow outbound MQTT connections using Node.js and a module such as MQTT.js (https://www.npmjs.com/package/mqtt). As far as inbound connections go, Apigee Edge does not support MQTT at this time.
While MQTT has its place, we believe there is value in using HTTP and other Web-based protocols for the Internet of Things. Apigee has sponsored and contributed to Zetta, an open source Internet of Things platform that helps developers expose devices as Web APIs. Other protocols, such as MQTT, can be used in conjunction with Zetta. If you're interested, you can learn more about Zetta here: http://www.zettajs.org. For Zetta-related questions, you may find the discussion group here: https://groups.google.com/forum/#!forum/zetta-discuss.

It seems that Apigee Link supports MQTT. But it's not publicity available yet. Custom access has to be requested at apigee.
From dmacdonald # community.apigee.com, Apr 25, 2016:
http://apigee.com/about/products/apigee-link.
This product will support both MQTT and WebSockets protocols for IoT device traffic. If you have a use case that you believe that Apigee Link can help with through its MQTT protocol support then I recommend that you raise your interest in this product here: https://pages.apigee.com/apigee-link-registration.html

Related

Gatling Recorder gRPC HTTP/2 support

I want to load test a web application server which communicates through gRPC (which uses HTTP/2 for transport) with the clients.
It seems that Gatling extended by the plugin Gatling-gRPC would be perfect for this. Among other things Gatling provides a Recorder which helps quickly generate scenarios by acting as a HTTP proxy between the client and the server.
Question 1: Is it possible to use the Gatling Recorder for recording the communication through the gRPC protocol?
Question 2: Is it possible to use the Gatling Recorder for recording the communication through the underlying HTTP/2 protocol?
I have tried already the Gatling Recorder to record the gRPC communication without success :-( Maybe caused by wrong configuration of the recorder?
No, it's not possible to record gRPC with Gatling's recorder atm:
it doesn't support HTTP/2
it doesn't support gatling-grpc which is a third-party plugin work (there's some ongoing work to contribute it upstream)

Using RabbitMQ over HTTP

I have to connect an old but critical software to RabbitMQ. The software doesn't support AMQP, but it can do HTTP Requests.
Does RabbitMQ support plain HTTP? Or should I use a "proxy" or "app" that actively transforms the HTTP Requests to AMQP 1.0 and pushes it to the RabbitMQ server?
https://www.rabbitmq.com/management.html
The management plugin supports a simple HTTP API to send and receive messages. This is primarily intended for diagnostic purposes but can be used for low volume messaging without reliable delivery.
As mentioned, it's designed for very low loads, but it may be usable. If you need higher loads, then by all means cast around for a library that does the job and create a proxy. Most languages will have something. I've personally created a lightweight API using Lumen and https://github.com/bschmitt/laravel-amqp to tie a few disparate services together in the past, and it seems to work very well.
It is possible not but really recommended depending on load. You have three options really, two of which are web socket based and one that seems like what you're looking for. I'd suggest starting with the rabbitmq docs.

Difference between SignalR and Pusher

I want to create a web app using React as the front end technology. A requirement for the app is that the server will be able to update all the clients with information about changes (not have to be an exact real time, but should update after no more than 10 seconds).
Solutions like clients requesting updates from the server every several seconds are out of the question.
Requirements:
1) The server's should be implemented with either .NET or with Node.js.
2) The connection MUST be secured via port 443 of the IIS.
I read a bit about Micorsoft's SignalR and about Pusher Channels which seems to provide exactly the kind of service I require.
Could you please elaborate about what exactly are the differences between them? When should I choose each? Which of them got more community support? Which is easier to implement? Stuff like that...
Both SignalR and Pusher Channels ultimately both use websockets to deliver messages to clients, so both should meet your requirements to deliver messages to clients in realtime.
1) Both offerings also meet your requirements for both library support:
SignalR supports .NET:
https://dotnet.microsoft.com/apps/aspnet/signalr
Pusher Channels has server support for both nodejs and .NET:
https://github.com/pusher/pusher-http-node
https://github.com/pusher/pusher-http-dotnet
2) Both offerings also meet your requirements for sending messages over TLS/WSS:
SignalR:
https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html
Pusher Channels:
Securing Pusher's messages
In terms of the differences between them this depends on your implementation, if you just run SignalR on your own ISS server then it will be down to you to manage all of the websocket connections and all of the scaling challenges that come with this.
However similar to how Channels works, SignalR also has a managed websocket service, so you do not need to manage the connections or scaling. You just make an API request with the message you want to send to either Channels or SignalR and this message is then broadcast to the interested clients connected by websockets. In this scenario you do not manage the websocket connections yourself.
However in terms of pricing Channels appears to be far more competitive (especially the free offering), so if you are looking at the managed offering Channels looks to be a better value proposition:
https://azure.microsoft.com/en-gb/pricing/details/signalr-service/
https://pusher.com/channels/pricing
Both offerings look fairly similar in terms of implementation (assuming you are using the managed service). The complexity would increase if you implement SignalR on ISS:
https://learn.microsoft.com/en-us/aspnet/core/signalr/scale?view=aspnetcore-2.2
In terms of support Pusher has a free application support offering:
https://support.pusher.com/hc/en-us
Hope this helps!
This presentation has some answers A 10 Minute Guide to Choosing a Realtime Framework

Can a http client using XMPP interact directly with jitsi videobrigdge server?

I want to implement a cross platform chat app. I want to use XMPP and I know that XMPP's BOSH extension is used for instant messaging.
However, I also need a video conference and audio conference abilities. jitsi does that actually. It uses prosody for instant messaging which actually uses BOSH. And jitsi uses jitsi-videobridge(which can be found in the same link I attached previously) for audio and video conference capabilities.
Here comes my question. Can an http client using XMPP protocol can talk to a jitsi videobridge server directly without needing any other requirements. I'm confused because in the official website of jitsi, it is written that it is compatible with WEBRTC. I really couldn't grasp the idea of WEBRTC. Does WEBRTC compatible mean that http client can talk to server without any other needs or XMPP protocol is the same basis for both?
Any help or corrections appriciated.

Protocol and implementation for Calling from a phone to PC

I am working on VoIP (pretty new to it). While exploring it I thought it would be nice to have a system which can allow calls from normal mobile/landline phones to your PC.
I see that Yahoo voice provides this service:http://voice.yahoo.jajah.com/home/index.castle?
What protocol this kind of service use ? I guess it should be VoIP only but I am not aware of the differences in there implementations.
Which protocol do we need to use if we want to call from phone to phone via Internet(like mobivox) ?
What infrastructure and facilities do one needs to set up for implementing this kind of services(development/programming aids as well as physical infrastructure) ?
Audio data is usually sent as RTP(Real-time Transport Protocol) packets. There is also a communication protocol like RTSP(Real Time Streaming Protocol) protocol used as a top layer.
See these documents:
http://www.ietf.org/rfc/rfc2326.txt
http://www.ietf.org/rfc/rfc3550.txt

Resources