This is a list of our most frequently asked questions. For more information about CloudAMQP, or if you need any support, please visit our support page.
CloudAMQP are managed RabbitMQ servers in the cloud – hosted message queues that lets you pass messages between processes and other systems. Messages are published to a queue by a producer, the consumers can then get the messages off the queue when the consumer wants to handle the messages. In-between, CloudAMQP can route, buffer, and persist the messages according to rules you give it.
Beginners guide of RabbitMQ can be found in our blog: RabbitMQ for beginners - What is RabbitMQ?
RabbitMQ is a high performance messaging broker. It gives your applications a common platform to send and receive messages.
Messages can be sent cross languages, platforms and OS, this way of handling messages decouple your processes from eachother and creates a highly scalable system. RabbitMQ implements the AMQP protocol. All AMQP client libraries work with CloudAMQP and there are AMQP client libraries for almost every platform on the market, including: Ruby, Node.js, Java, Pyhton, Clojure and Erlang.
A message is the data transported between the publisher and the consumer, it's essentially a byte array with some headers on top.
Beginners guide about message queuing can be found in our blog: What is message queuing?
Message queues provides an asynchronous communication protocol. They are used to transmit data between components in an architecture. The concept is that messages are put into a queue and then removed from the queue in a predefined order. Messages placed onto the queue are stored until the recipient retrieves them. This way of handling messages decouple the sender from the receiver. The sender and the receiver of the message do not need to interact with the message queue at the same time.
A message brokers purpose is to handle incoming messages from applications and perform some action on them. These actions could for example be routing to one or many destinations, provide message routing depending on routing keys, to transform messages to an alternative representation or to respond to events or errors.
AMQP is a protocol for message-oriented middleware. The defining features of AMQP are message orientation, queuing, routing (including point-to-point and publish-and-subscribe), reliability and security. RabbitMQ implements the AMQP protocol. All AMQP client libraries work with CloudAMQP and there are AMQP client libraries for almost every platform out there, including: Ruby, Node.js, Java, Pyhton, Clojure and Erlang.
A connection is a TCP connection between your application and the RabbitMQ broker.
A channel is a virtual connection inside a connection (inside of a TCP-connection). A Channel is used to send AMQP commands to the broker. When you are publishing or consuming messages or subscribing to a queue is it all done over a channel.
Imagine that you have a web service that receives many requests every second, where no request is afford to get lost and all requests needs to be processed by a process that is time consuming.
Imagine that your web service always has to be highly available and ready to receive new request instead of being locked by the processing of previous received requests.
In this case it is ideal to put a queue between the web service and the processing service. The two processes will be decoupled from each other and does not need to wait for each other. If you have a lot of requests coming in a short amount of time, the processing system will be able to process them all anyway. The queue will persist requests if their number becomes really huge.
You can then imagine that your business and your workload is growing and you need to scale up your system. All that is needed to be done now is to add more workers to work off the queues faster.
In addition to providing a buffer between a web service and another processing service, message queues can be used for more advanced scenarios. RabbitMQ can be configured to route and distribute messages according to different rules and different processes. Messages can be added to different queues depending on how the messages should be handled. The processing systems can then process them at their leisure.
A message queue will keep the processes in your application separated and independent of each other. The first process will never need to invoke another process, or post notifications to another process, or follow the process flow of the other processes. It can just put the message on the queue and then continue processing. The other processes can also handle their work independently. They can take the messages from the queue when they are able to process them.
This way of handling messages creates a system that is easy to maintain and easy to scale.
Instead of building a massive application, is it beneficial to decouple different concerns in your application and only communicate between them asynchronously with messages. That way different parts of your application can evolve independently, be written in different languages and/or maintained by separated developer teams.
Messages can be stored-and-forwarded. A message can be redelivered until the message is processed.
Instead of polling your data store, publish a message when new data is inserted. Interested parties will be notified immediately and your data store will be ready to answer qualified queries instead.
Message queueing is the key to make your application scale. As the workload goes up you only have to add more workers to work off the queues faster.
Message queues decouples your processes. If a process that is processing messages from the queue fails, other messages can still be added to the queue and be processed when the system has recoved.
Message queues enable asynchronous processing, meaning that it allows you to put a message on a queue without processing it immediately.
CloudAMQP is an excellent backend for realtime applications. Notifications and message streaming is handled very effectively by RabbitMQ, you will be able to push thousands of messages per second.
Cloud-based messaging will increase the speed of getting the application to the market. Developers can focus on the core part of their applications, instead of managing and maintaining servers and queueing infrastructure, like updates and mirroring of clusters.
Our customers are usually developers who wants to focus on the core part of their applications, instead of managing and maintaining servers and queueing infrastructure.
We have customers in a range from large enterprise business and startups to individual hobby developers.
You can delete an instance from the instances list page. If you remove an instance, your queues, exchanges and bindings will be deleted and we will not be able to restore them.
The admin user must have access to all vhosts on the server for the queue and consumer alarms to work correctly.
Queue alarms can be triggered to send notification emails to you and your co-workers when a number of messages in a queue reaches a certain threshold, for a given amount of time.
Consumers alarms can be triggered to send notification emails to you and your co-workers when a number of consumers for a queue is less then or equal to a given number of consumers, for a given amount of time.
(Only for dedicated instances) When CPU alarm is enabled will you receive a notification email when you are using more then 80% of the available CPU for more then 15 minutes. One alarm email will be sent to you every 6 hours until the problem is solved. It is recommended to enable CPU alarms. It can be enabled through the Control Panel.
(Only for dedicated instances) When Memory alarm is enabled will you receive a notification email when you are using more then 90% of the available memory for more then 15 minutes. One alarm email will be sent to you every 6 hours until the problem is solved. It is recommended to enable Memory alarms. It can be enabled through the Control Panel.
Virtual Hosts (vhosts) makes it possible to separate applications on one broker. You can isolate users, exchanges, queues etc to one specific vhost. You can separate environments, e.g. production to one vhost and staging to another vhost within the same broker, instead of setting up multiple brokers.
vhosts can be added to all dedicated instance.
You will need to take action if that happens. You either need to migrate to a larger plan or find the reaons for the high memory/CPU usage. This blog post describe how to handle and avoid high CPU or memory usage. Alarms can be activated to send notifications when you have high CPU or memory usage, information about that can be found in our monitoring pages. The alarms can be activated from the control panel of your instance.
Get started guide can be found here. Once you have created your account you can get started queuing and processing by using any of the guides, depending on platform and language. These tutorials cover the basics of creating messaging applications using CloudAMQP.
Yes, custom RabbitMQ plugins can be enabled and disabled from the CloudAMQP Control Panel for dedicated plans, that is Big Bunny and larger. We do support custom plugin installation, send us an email or enter the chat and we will support you.
All our plans has protocol support for AMQP, AMQPS, HTTPS, STOMP and MQTT. Dedicated plans do also have support for WEB-STOMP.
Yes, it is possible. Port should be 443 and --ssl has to be used. Download the same rabbitmqadmin version as the RabbitMQ version in your cluster. (Can be downloaded from here: https://your_host.rmq.cloudamqp.com/cli/)
The example below show how to list exchanges:
rabbitmqadmin --host=HOST --port=443 --ssl --vhost=VHOST --username=USERNAME --password=PASSWORD list exchanges
All clusters have nodes in multiple availability zones and have automatic fail-over.
There is no limitations in number of channels per connections on our dedicated plans. We limit all shared plans to 200 channels per connection.
You can read about Amazon VPC and VCP peering to CloudAMQP in this blog post.
Dedicated VPC is only available as an extra option for our dedicated plans, for $99. A dedicated plan is Big Bunny or any plan larger then Big Bunny. Select to create your cluster in a dedicated VPC. When you create your VPC you get to select the VPC subnet, make sure that it does not overlap with any VPC subnets you want to peer with.
Open the details for your new instance as soon as it is created and navigate to the tab VPC Peering. Enter your AWS Account ID and your VPC ID and Press save. CloudAMQP will now request to set up a VPC connection to you.
The request can be accepted from the Amazon VPC console at https://console.aws.amazon.com/vpc/
CloudAMQP are fully integrated with following platforms:
CloudAMQP is available in following clouds and regions:
AP-NorthEast-1 (Tokyo) *, AP-NorthEast-2 (Seoul), AP-South-1 (Mumbai), AP-SouthEast-1 (Singapore), AP-SouthEast-2 (Sydney), CA-Central-1 (Canada), EU-Central-1 (Frankfurt), EU-West-1 (Ireland) *, EU-West-2 (London), EU-West-3 (Paris), SA-East-1 (Sao Paulo), US-East-1 (Northern Virginia) *, US-East-2 (Ohio) *, US-West-1 (Northern California) *, US-West-2 (Oregon)
Amsterdam 2, Amsterdam 3, Frankfurt 1, London 1, New York 2, New York 3, San Francisco 1, Singapore 1, Toronto 1
Chicago, Dallas, Hong Kong, London, Northern Virginia, Sydney
Asia East *, Europe West *, US Central *, US East *
AMS01 - Amsterdam, Western Europe, DAL01 - Dallas, Central United States, DAL05 - Dallas, Central United States *, DAL06 - Dallas, Central United States, HKG02 - Hong Kong, Asia, HOU02 - Houston, Central United States, LON02 - London, Western Europe *, MEL01 - Melbourne 1, Australia, SEA01 - Seattle, West Coast United States, SJC01 - San Jose, West Coast United States, SNG01 - Singapore, Southeast Asia, TOR01 - Toronto 1, Canada, WDC01 - Washington DC, East Coast United States
Brazil South, Canada Central, Canada East, Central India, Central US, East Asia, East US *, East US 2, Japan East, Japan West, North Central US, North Europe, South Central US, South East Asia, South India, UK South, UK West, West Central US, West Europe, West India, West US, West US 2
* Available regions for shared instances are marked with an asterisk
Full information about web-stomp can be found at our web-stomp page or at RabbitMQ. Web-Stomp is a plugin to RabbitMQ which exposes a WebSockets server (with fallback) so that web browsers can communicate with your RabbitMQ server/cluster directly.
The Web-Stomp plugin is enabled on all dedicated plans (launched after June 2014).
The Web-Stomp plugin is enabled on all dedicated plans (launched after since June 2014).
We do support TLS (SSL). In most clients is it easy to use TLS, just replace amqp:// with amqps:// in the URL.
Note: TLS will only secure messages during the transport. What we recommend for highly sensitive information (HIPAA, PCI etc) is that you encrypt your message bodies on your side and that you have a shared key between your publishers and your consumers.
Our servers certificate is signed by one of the common trusted root CAs, Comodo, most OSes/browsers comes with the Comodo cert built in. If you don't have a trust store you can download the AddTrust/Comodo root cert here: https://support.comodo.com/index.php?/Default/Knowledgebase/Article/View/979/108/domain-validation-sha-2
AMQP's messages are just byte arrays, you can send anything, encrypted or not.
For encrypting message bodies we can give you examples if you let us know which language(s), framework(s) you indent to use. Email us at email@example.com and we will help you.
Yes it is possible to enable from the plugin tab for your CloudAMQP instance.
One message is counted as consumed when a message is published from your service to RabbitMQ or when one messages is consumed from RabbitMQ.
If it feels like you are publishing/consuming less messages then specified in your CloudAMQP console and if you are using Celery - please check if you have disabled celery events. Celery recommended settings can be found here. Have a look att CELERY_SEND_EVENTS, --without-gossip, -without-mingle and--without-heartbeat.
If you are not using Celery, send us an email and we will have a look at your instance.
The reset is performed the first day every month.
It is only possible to manage users, vhosts and permissions on dedicated plans. A dedicated plan is Big Bunny or any plan larger then Big Bunny.
Yes, everything is included in the price. There is no extra cost or payment required for data traffic or to other platforms.
All plans are billed by the second, you can try out even the largest instance types for mere pennies. As soon as you delete the instance you won't be charged for it anymore, i.e. if you had a Big Bunny (for $99/month) running for 15 days, then you will only be charged $49.50.
Billing occurs at the end of each month, and you are only charged for the time an instance has been available to you.
You also have the option to prepay an amount that suits your needs. If you'd like to avoid lots of small transactions, then prepayment is for you. A prepayment can be made for one to several months in advance*.
A customer subscribing to our plan Big Bunny equalling $99/month can choose to make a prepayment of $99*12 (and then skip being charged on a monthly basis for one whole year). One thing that is good to know is that a prepayment will be covering all plans the customer have on his/her account. So let's say that the customer in the example would add another Big Bunny plan to his/her account on month five, then the prepayment will cover both plans for three more months. After that the customer's prepayment will have been fully spent.
You can pay with Paypal, VISA, Mastercard, American Express, Maestro, JCB, Diners Clubor or Invoice/transfer. Contact us at firstname.lastname@example.org if you require invoicing. Payment options can be found under Billing information in the Control Panel.
You don't have to worry about this error. We don't recommend client certs at the moment, it's hard to setup and don't necessarily increase the security. We use the username/password as authentication and authorization, just like any HTTPS protected website, the traffic is still fully encrypted and protected from MITM-attacks etc.