Tuesday, August 12, 2008

What Qpid Management Console can do ?

I thought of writing a complete documentation about the Apache Qpid management Command Line tool which would be helpful for the users to get the maximum out of the management console.

  • How to connect with the Broker
Before you come in to this state you have to build the source or you can get the binary and extract then set the QPID_CLI environment variable to the main directory of the source or binary,then only you are in a position to start working with management console. First check whether the broker is up and running. In order to simply connect with the broker you can run the qpid-cli script which required arguments.

${QPID_CLI}/bin/qpid-cli -h [HostName of IP of the broker ] -p [Port of the broker]

Default values for arguments -h [localhost] -p [8999]

  • One Shot mode
With one shot mode you can run interactive mode commands for one time and disconnect with the broker.This feature is useful when you want to run particular command in the management console using a script which is running in the normal console.What you have to do is you have to give the command you want to run with the qpid-cli script running command.

Ex 1: $QPID_CLI/bin/qpid-cli queue list -- This will list the queue objects and disconnect.

Ex 2: $QPID_CLI/bin/qpid-cli queue view -n ping - This will display information about all the message in the queue with the name of ping

Likewise you can run any command in one shot mode and get the out put for one time.

  • Report Generation Mode
If you want to generate reports you can do it by defining your required information using a property file. There's a sample property file in the parent directory and you can have a look and get an idea about that.You can generate reports by giving a time interval in the property file. In order to start the daemon mode you have to run the qpid-cli script with the option : -r by giving the path for your property file.

Ex: $QPID_CLI/bin/qpid-cli -r ../report.property

You should specify a property file in order to run the daemon mode and get information repeatedly.
  • Interactive mode with number of command
This is the mode you get when you run the qpid-cli script without the one shot mode and without the daemon mode with [-r] option.Once you connect with the broker it display you a prompt [qpid-admin-$], then you can run several commands to can perform following tasks.

For all the commands object type is command and most important command so you can use this option value without giving the option letter by giving that option value at the beginning of the command.

Ex: [list -o queue ] can use this command like this dropping -o option [queue list]
Ex: [list -o queue -n ping] = [queue list -n ping]

  • Data displaying commands
This is the set of commands which display the information about broker.

list : list information about the given object type with limited number of attributes and you can use number of command options to get different useful behaviors with the list command.You can get the complete description about the command by running the command like this.[list -h].



info : list all the attributes of a given object type. This command works very similar way to list command. You can use -h option for help and get complete description of the info command.

view : view information about the content of the message in the queue object. In order to run this command you have to specify the object type at the beginning.You can give how many message informations you want to view from the top of the queue by using -t option.

Ex : queue view -n message_queue -t 5
[list the message info for top 5 messages in queue message_queue]

viewcontent : view the content of the a given message in the queue. You have to give the messageId as a parameter with -id option letters.

Ex: queue viewcontent -n message_queue -id 12
[list the content encoding and Mimetype of the message with the messageId for the give message which is in the queue message_queue]
  • Data modification commands
This is a set of commands which allow users to deal with messages in queues.Users can delete messages from a give queue and user's can move one message from one queue to another queue.

delete :Using this command user can delete a give message from a given queue you can specify how many messages you want to delete from the queue from the top of the queue by using -t option.If user does not give how many messages to delete from the top of the queue program is going to delete all the messages from the queue after giving a prompt to confirm the deletion.

Ex: queue delete -n message_queue -t 3
[Delete top three messages in the queue message_queue ]

move : This command allow user to move number of messages from one queue to another queue. First you have to specify from which queue you want to move messages by using -n1 and -v1 option letters(-n1 queue name/ -v1 virtual host).Then you have to use -n2 option to give the target queue name and then you have to give From messageId and To messageId using -fmid and -tmid option letters to specify the messages range you want to do the move operation.

Ex: queue move -n1 message_queue -n2 ping -fmid 13 -tmid 15
[This will move messages with the messageId range of 13-15 from queue message_queue to queue ping.


If you have any problems please leave a comment in this post or simple write to the following email : lahiru@apache.org


Thursday, July 31, 2008

QPID_CLI 0.2 Released

Major changes

1.You can use list command without specifying object type using -o option by giving object type at the beginning.

  • ex: queue list - This is equal to list -o queue.
  • exchange list - This is equal to list -o exchange

2. Added following options for list command.

  • -n --name Allow user to specify object name type.
  • -v --virtualhost Allow user to specify virtualhost type.
  • -output Allow user to specify output format (csv)
  • -separator Separator for the output formatter

3. Change the way list command display information.

  • Now list command display limited number of information in a tabular format which is very clear.
  • If user want to see all the attributes of particular object user have to use info command.

4.Added a new command to CLI called ** info **

  • This command is very similar to list command and supports almost all the arguments which works with list command.
  • Only difference is this command display all the attributes of particular object type in a different format.

5.Added command completion for users convenience now you can use TAB key to complete the command and object type.

6.Added capability of running a command in one shot which is very useful when you want to run particular command in qpid-cli using a
shell script.

  • Ex: <$QPID_CLI/bin/qpid-cli queue list > - This command list all the queue objects and exit from the CLI so you can use these when you use shell scripts.
  • Usage of one shot mode : you can use grep awk like commands with normal qpid-cli commands with one shot mode like this.
$QPID_CLI/bin/qpid-cli queue list | grep ping


You can download it from here
http://code.google.com/p/lahirugsoc2008/downloads/list

Project Homepage
http://code.google.com/p/lahirugsoc2008

I warmly welcome your early feedback on this implementation.

Thanks for your interest in Apache Qpid and Qpid CLI.


Tuesday, July 15, 2008

QPID_CLI 0.1 Released

I have released Apache Qpid CLI it's first release with version 0.1.This is basically a management console which works with almost all the releases of Apache Qpid with JMX support and allow users to monitor useful information via the console.This works only for Linux based systems.

Key features

  1. This management console is released for the first time and at the moment it allows users to list number of MBean information which registered inside the qpid Java broker.
  1. This only supports only for the following command since this is the first release.
List appropriate information of the give object
  • list
For more informations
  • list --help
Disconnect the management console with Java broker
and come back to normal command prompt
  • exit

You can download it from here
http://code.google.com/p/lahirugsoc2008/downloads/list

Project Homepage
http://code.google.com/p/lahirugsoc2008

I warmly welcome your early feedback on this implementation.

Thanks for your interest in Apache Qpid and Qpid CLI.



Friday, June 27, 2008

Import Apache Qpid in to Intellij Idea

During last couple of days I was struggling to import Apache Qpid java in to Idea (Intellij Idea) and start the broker with Idea.My main target was to debug the broker using Idea. But there were few modifications to be done.I thought this will be useful for the people who are new to Qpid.

1. First build the Apache Qpid java using following commands or please refer to the how to build in Apache Qpid.
  • mvn -Pfastinstall
  • cd distribution
  • mvn (This will create all the artifacts )
  • tar -xzvf target/qpid-1.0-incubating-M3-SNAPSHOT-java-bin.tar.gz
In here the file name is depend on the version of the Qpid you are using, somehow you have to extract java binary.Then navigate to the extracted directory and set the QPID_HOME variable to that directory.
Now you are in a possition of running Qpid in commandline so you can try this out by following command.
  • $QPID_HOME/bin/qpid-server
Now come back to importing in to Idea. Go back to the source folder of Qpid java and run the this command inorder to build the Idea project.
mvn idea:idea
This will create an Idea project so you can open the project using Idea but the problem is you won't be able to run the java broker on Idea and you won't be able to debug the broker. So in order to make it happen you have to do several modifications. First we have to hardcode the Qpidhome, although we have already set the environment variable it's unable to access them when we start the broker using Idea.
Please have a look in to following diff files and you'll get to know how to do those modifications. diff files.
When you do modifictaion don't apply the patch directly please have a look and do the modifications according to your installation which means your Qpidhome is different from my one.After doing three of those modifications compile the project in Idea and run it, It will work. If this doesn't work for you please be kind enough to comment on this post.

Thanks

Friday, June 20, 2008

Exokernel Concept

I'm doing the module Advanced Operating Systems and while I'm reading on that I found some interesting topic called Exo-kernel Operating systems.
This was initially proposed by a research group at MIT in 1995. This is a concept which is very useful when it comes to arena of developing high performing applications and this concept is really controversial when we concern about the idea people had about operating systems.Previously people thought about operating systems as a piece of software which hide all the tricky information from application developer and user of the system.But when we concentrate about the performance this abstract layer leads to a huge performance hit due to this fixed abstraction.
As an example if we concern about a Webserver it will keep on increasing it's cache although it's exceed the main memory since the operating system itself handle the memory using the virtual memory so application doesn't have any idea about what's going on inside.So this leads to reduce the performance of the web server.
Likewise using the high level abstraction is always reduce the flexibility of the application development and limit the performance and functionality of the system.So what they suggest with this exokernel concept is kernel (exokernel) will handle the hardware multiplexing and resource protection while application itself will handle all the resource management using their own applicaton specific policies. So what happen is application developer is suppose to implement a piece of software called library operating system which do all the resource management and the kernel will take care of multiplexing the hardware. But the main challenge of this concept is every application has to develop it's own library operating system and this leads to a real overhead.Exokernel researchers develop their own library operating system called ExoS and an Exo kernel called Aegis and they did some benchmark with their resources and click here to see that...

And they have developed a web server called cheetah which use it's own library operating system which is specific for a web server and they used infomations like knowledge about HTTP to bind with IO and they are not copying data but they send data directly to the client from it's cache. So this is the performance difference they had with that cheetah .. click here

So Exokernel principle is something which seperate the hardware protection from resource management from a typical operating system.With exokernel it's not trying to give a virtual machine to each and every application but it's tying to expose hardware to the application while protecting hardware resources from untrusted application.Inorder to implement the protection with exokernels they use this techniques
  • Secure Binding
  • Visiblel Revocation
  • Abort Protocol
Secure binding is a way of protecting resource by binding them with the library operating systems in order to impelement it they have use several techniques like hardware protection, software protection and download code.Visible revocation is revocating resources with keep in contact with the library operating system, with normal applications revocation happens invisibly as an example when kernel wants to deallocate a particular page it doesn't go and ask from application but what it does is simple deallocate the resource but in here kernel deallocate memory by asking from the library operating system. And at last Abort Protocol is a way of break binding when library operating system is unable to respond to the kernel.So here what happen is when libOS is unable to respond to particular request it breaks appropriate resources which bind with library operating system and let the application to know that.

Those are the information I got about exokernels and more commanets will be very useful.

Thursday, May 8, 2008

Extract JMX information from a remote MBean server

I was able to write a code which is capable of extract all the MBeans with a given domain and print all the attribute value and attribute names of each and every MBean.
Here's my code...

If you want to extract all the MBeans which are registered with the connected Server you can simply pass two null value to the method queryNames method.

Monday, May 5, 2008

HP 520 Laptop with Ubuntu

I bought an HP 520 Laptop from Sri Lanka which is worth 800USD. And I wanted to install Ubuntu 7.10 on my new machine and I was bit of suspicious whether it supports for all the harware in my machine. After successful installation of Ubuntu 7.10 I was able to review that It supports for Intel Pro wireless device but unfortunately It doesn't support for sound card.So I decide to swich in to Latest Ubuntu release 8.04 which was release before one week and it works fine for my HP 520 Laptop. But honestly I have certain problems with the OS in my machine.
1. When I hibernate it hibernates and when I start my machine in next time It works fine for few minutes and it get stuck...

2.After working for three or four hours my machine is becoming quite slow and there's no issue with the memory usage and processor usage. Yesterday night I was working on Idea with opening two Idea windows and slow down happened all of a sudden and I was able to find my swap usage became 100% so it's obvious to slow down my machine.

I'm not sure about the problem this might be a problem with my hardware or may be a problem with the OS.I feel like switching for Debian but I love Ubuntu..

If any body knows any solution please leave a comment...

lahiru