Hi Rahul,
The format that is used is the AMQP one as described here:
http://cwiki.apache.org/qpid/management-design-notes.html
I would suggest you reuse the existing java Encoder/Decoder. You can do
something like:
==== code sample ======
public class ManagementDecoder extends AbstractDecoder
{
private final ByteBuffer _buf;
public ManagementDecoder(ByteBuffer buf)
{
_buf = buf;
}
....
==== end of code sample ======
Then when receiving a message you need to decode it based on its type.
For example:
==== code sample ======
ManagementDecoder decoder = new ManagementDecoder(buf);
.....
pn = decoder.readStr8();
cn = decoder.readStr8();
...
int propCnt = decoder.readUint16();
for( int i = 0; i < propCnt; i++ )
{
Map<String,Object> map = decoder.readMap();
.....
==== end of code sample ======
I would also suggest we define a management interface (you can look at
the python one --- qpid/python/qpid/management.py) that we can use to
access to the managed packages/classes/objects...
Arnaud
On Thu, 2008-06-19 at 12:02 +0100, [EMAIL PROTECTED] wrote:
> Hi,
>
> I did again with Maven and this time it builds all the classes... So after
> creating and binding both the queues "reply" and "management". I am trying
> to fetch the management information (all what broker knows) from management
> queue and getting some encoded messages (i believe). for instance,
>
> --------------
> Message: AM1h
> Message: AM1c
> Message: AM1c
>
> Message: AM1c
> Message: AM1c
> �ú�h�XW*��h�_�
> amq.directdirect
> Message: AM1i
> �ú�h�XXCq�h�_�
> Message: AM1i
> �ú�h�XYIY�h�_�xR
> Message: AM1i
> �ú�h�XZH��h�_�xR
> Message: AM1i
> �ú�h�X[Q��h�_Ȭ�
> amq.fanoutfanout
> Message: AM1i
> �ú�h�X\O�h�_Ȭ�
> Message: AM1i
> �ú�h�X]P��h�_���
> Message: AM1i
> �ú�h�X^N��h�_���
> Message: AM1c
> �ú�h�X_OP�h�_ǕV
> Message: AM1i
> �ú�h�X`Ke�h�_ǕV
> Message: AM1c
> �ú�h�XaK��h�_�v
> Message: AM1i
> �ú�h�XbF��h�_�v
> ....
> ...
>
> java program which is retrieving this above mentioned encoded management
> information from management queue is :
>
> package apache.qpid.client;
>
> import java.nio.ByteBuffer;
> import org.apache.qpidity.api.Message;
> import org.apache.qpidity.nclient.Client;
> import org.apache.qpidity.nclient.Connection;
> import org.apache.qpidity.nclient.Session;
> import org.apache.qpidity.nclient.util.MessageListener;
> import org.apache.qpidity.nclient.util.MessagePartListenerAdapter;
> import org.apache.qpidity.transport.MessageCreditUnit;
>
> /**
> * This listens messages from management queue
> */
> // TODO: decode these messages
>
> public class Listener implements MessageListener
> {
> // implementation of onMessage
> public void onMessage(Message m)
> {
> String data = null;
>
> try
> {
> ByteBuffer buf = m.readData();
> byte[] b = new byte[buf.remaining()];
> buf.get(b);
> data = new String(b);
> }
> catch(Exception e)
> {
> System.out.print("Error reading message");
> e.printStackTrace();
> }
> System.out.println("Message: " + data);
> }
> public static void main(String[] args)
> {
> // Create connection
> Connection con = Client.createConnection();
> try
> {
> con.connect("localhost", 5672, "test", "guest", "guest");
> }
> catch(Exception e)
> {
> System.out.print("Error connecting to broker");
> e.printStackTrace();
> }
> // Create session
> Session session = con.createSession(0);
> // Create an instance of the listener
> Listener listener = new Listener();
> // create a subscription
> session.messageSubscribe("management",
> "listener_management",
> Session.TRANSFER_CONFIRM_MODE_NOT_REQUIRED,
> Session.TRANSFER_ACQUIRE_MODE_PRE_ACQUIRE,
> new MessagePartListenerAdapter(listener),
> null);
> // issue credits
> session.messageFlow("listener_management",
> MessageCreditUnit.BYTE, Session.MESSAGE_FLOW_MAX_BYTES);
> session.messageFlow("listener_management",
> MessageCreditUnit.MESSAGE, 25);
> // confirm completion
> session.sync();
> session.messageCancel("listener_management");
> //cleanup
> session.sessionDetach(session.getName());
> try
> {
> con.close();
> }
> catch(Exception e)
> {
> System.out.print("Error closing broker connection");
> e.printStackTrace();
> }
> }
> }
>
> My question is how can I decode these messages?
>
> Thank you.
>
> Regards,
> Rahul
>
>
> On Jun 16 2008, Aidan Skinner wrote:
>
> > On Mon, Jun 16, 2008 at 9:56 AM, <[EMAIL PROTECTED]> wrote:
> >
> > > Thanks for your help. I am still with my previous problem (i.e.
> > > missing some APIs)
> >
> > > Client.java (under org.apache.qpidity.nclient) is missing some apis. eg.
> > >
> > > org.apache.qpidity.transport.ConnectionClose;
> >
> > > due to these I can not compile/run the code.
> >
> > It looks like you haven't run the generator, try doing an ant build
> > and it should create those classes for you.
> >
> > - Aidan
> >