Pre-built AMQP and STOMP client (as in GUI client) - activemq

I'm looking for a client (as in GUI client, not client library) to play with our MQ server and familiarize myself with its semantics. Something that will send and receive messages at the press of a button (or a text command) and maybe even update me about the status of the server queues and messages. Administration would be a bonus. The UI doesn't have to be graphical (i.e. command line clients are fine).
The server will probably run RabbitMQ so anything RabbitMQ-specific is fine, as is ActiveMQ. But I'd rather have a generic AMQP or STOMP tool.
So, does anything of the sort exist?
I know some management and monitoring tools come with both server distributions, but no clients, right?

For Apache ActiveMQ, there is
the web admin console at http://localhost:8161/admin/
the ApacheActiveMQBrowser project on Sourceforge:
An open source project of developing
Message admin gui based tools for
Apache ActiveMQ.
HermesJMS, it does not mention ActiveMQ 5 (only 3 and 4) on the plugin page, but there is an active user forum

The rabbitmq-management plugin that comes with RabbitMQ (and enabled by rabbitmq-plugins enable rabbitmq_management) has a web-based interface that listens on the port 15672 and can do everything you are (I was) asking for.

Check out the BQL RabbitMQ plugin.
It gives you an SQL-style language for AMQP. For instance,
BQL> create exchange myexchange;
ok
BQL> create durable queue 'myqueue'
ok
BQL> select name,messages from queues where 'durable'=true order by name
----------------------
| name | messages |
----------------------
| myqueue | 0 |
Obviously, it's RabbitMQ specific.
If you're willing to do a bit of coding, you could take a look at the examples in the RabbitMQ Java and .NET clients:
Java examples
.NET examples
They're not quite graphical, but trying to understand them forces you to ask the right questions.
It's been a while, but I remember thinking that the best way to familiarize yourself with AMQP is to read the 0-9-1 spec and write some simple programs; in particular, the protocol documentation on that site gives a lot of examples.

Command line tools (written in C) to send and receive AMQP messages: http://github.com/rmt/amqptools

Related

RabbitMQ Management Plugin vs. AMQP

I wish to programmatically manage exchanges, queues, bindings, and view resource usage of my rabbitmq server. I can do all these by making REST API calls made available by rabbitmq management plugin. However, is it possible to achieve all that using AMQP protocol instead of using the management plugin? In other words, will an AMQP client allow me to do everything that the management plugin does?
If there is no alternative, is there any performance concern if I enable and use the management plugin?
In theory someone could implement a way that all the info is delivered via an AMQP queue. But it would have to be so that no consumer should ACK any of the messages because then they would be gone from the queue and the publisher would have to figure this out and publish the same thing again. In other words, it shouldn't be done.Also it would be semantically (?) wrong, since AMQP by it's nature is designed with flowing/changing/dynamic data in mind, and all this data about resources, queues etc is static (and in some cases meta) info.
No performance concerns (in this context of course).
Additionally you can also use the command line tool if it's more comfortable
AMQP 0.9.1 does not have any way of discovery or listing of queues and exchanges. Management plugin, on the other hand, has APIs such as GET /api/exchanges and GET /api/queues. Due to this requirement, management plugin was my only solution.

Conversion from MQTT to AMQP/STOMP

I'm kind of new to these protocols, and just started exploring Message brokers like Apache Apollo and RabbitMQ.
So my broker receives MQTT messages from a publisher. And I would like to convert it into AMQP (preferably) or STOMP protocol to send to a web server. But I've so far been unable to do so.
I looked into RabbitMQ, and tried enabling the MQTT plugin, but when I do load it, I'm unable to start the server.
I was wondering if anyone can guide me here? Is there an API that can help me? And I'm very confused about RabbitMQ. I've been able to load other plugins easily,like stomp, management utilities etc.
I'm 100% sure it is doable. I am doing it right now with robomq.io broker. One cause could be sometimes bugs in your client library restrict you doing so.
Another thing you should be aware of is that internally, RabbitMQ MQTT adapter is mapped into amq.topic exchange by default, so on your STOMP peer, you should subscribe or send to /topic/yourTopic; on your AMQP peer, bind your queue to amq.topic exchange or publish to that exchange.
Follow this example code and documentation to build your client.
If you can't figure out your server, just get a free trial from robomq.io. It saves you time and money.
The development tool I am using is robomq.io broker, producers in Python (AMQP library: pika, MQTT library: paho, STOMP library: stompest), consumer in Node.js (library: amqplib).
Hope it helps!
Well, I'm not sure if this question should be taken down. But if it has to be I leave it to the discretion of the moderators and the stackOverflow community in general.
btw, I use Ubuntu 14.04.
About the RabbitMQ broker
So Mosquitto was running un the background occupying the port 1883 normally used for MQTT. I could have changed the port for RabbitMQ, but decided against it and tried to kill the Mosquitto process. But for some reason, I could NOT.
For now, my quick fix was removing Mosquitto completely and this freed the port, enabling RabbitMQ to use it.
About the protocols
I've used Paho and the RabbitMQ libraries provided to code out simple programs that can publish and receive messages in AMQP/MQTT via the RabbitMQ broker.
(My Googling needs to be better!)
Still haven't converted one to the other. But that shouldn't be too big a step to achieve.
Still would be nice to know if there's an API or something that can help me achieve the conversion in a very simple manner. Of course, if there's not, I'll figure it out ASAP
Any suggestions/comments are heartily welcome. I'm brand new to all this and could really use advice from all you seasoned pros :)

Benchmarking Rabbitmq Tool

I have multiple components connected with RabbitMQ. Some are producers and consumers. I need to benchmark/load test my system. I need to ensure that the consumers can handle N messages/second. I've done some searching on the internet but haven't really found anything. Does anyone have any experience with benchmarking RabbitMQ? Ideally I'd like to just spam the network with messages without having to create a new producer.
Do you know the tool JMeter? With this tool you can simply simulate a heavy load on a server. I use it normaly for web applications, but i saw a JMeter-RabbitMQ-plugin to test AMQP message broker like RabbitMQ with JMeter. I think you should have a look on it.
If you have a web application in the front of RabbitMQ, then you can also test directly this application with JMeter.

Tool for sending messages to ActiveMQ manually

I have worked on IBM MQ and this is the first project where I am to work on ActiveMQ. After reading basic tutorial I found that both are similar. So I started creating small applications to listen to some queues.
Working with IBM MQ, I used to use RFHUtil tool to browse/send messages to queue which provided features to set message headers as well.
In activeMQ I am sending messages from localhost admin console. I do not find options to set message header from here. For example if I want to set source system in the message header. Is there any way/tool to get this feature on activeMQ?
I like hermes jms
Be sure to pick the Head version if you want support for headers. Its pretty similar to RFHUtil but allows "all" JMS providers.
http://hermesjms.com/patches/
I also made a command line tool for the same task which is handy, called A.

Understanding Apache ActiveMQ

I am confused about the function of Apache ActiveMQ.
I downloaded ActiveMQ from this link.
So I use it this way (environment: Windows 7): I start the bin/activemq.bat, then it works.
My question is: Does this mean I start a server on my machine? When I initialize the ActiveMQConnectionFactory, the broker URL is tcp://localhost:61616. But what if I want my machine to serve as a server and another machine to connect to my server?
Yes, you can use the primary box as a server and have consumers/subscribers running on other boxes (which will need to connect to the server - you will need to specify the server hostname & port for the connection to be established) - once in place, the messages on the server (topic or queue) can be consumed by the clients.
If you one have one producer and one consumer, you can look into using queues - if you have more than one consumer/subscriber, you can look into setting up a topic to which the consumers will subscribe to. Messages need to be inserted to the topic/queue as needed.
You can specify the server information in your code or preferably in the config file.
For reference to topologies:
http://activemq.apache.org/topologies.html
Also, you can choose to persist your messages or not based on your use case. Kaha DB is the preferred route (specially if performance is of concern).
Useful examples:
http://sujitpal.blogspot.com/2007/12/jms-patterns-with-activemq.html
http://vvratha.blogspot.com/2012/05/java-client-to-sendreceive-messages-for.html
Hope it helps.
Apache ActiveMQ ™ is the most popular and powerful open source messaging and Integration Patterns server
& it act like a third party server.
Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License.
ActiveMQ have the capabilities to send 100 MB single message framework and maintain 1000 concurrent connection simultaneously , for the further information you can check activemq.xml in your documentation.
Further Info at here about the ActiveMQ