最近做一个项目,需要从QPID消息中获取信息。
注册QPID消息
QueuelistenerManager queuelistenerManager = new QueuelistenerManager(true);
QueueListener queueListener = new QueueListener();
String url = “amqp://guest:guest@clientid/test?brokerlist='tcp://192.168.2.1:5772'”;
queueListener.setUrl(url);
queueListener.setQueueName("QPID_QUEUE_NAME");
MyProcessor myProcessor = new MyProcessor ();
queueListener.setProcessor(myProcessor );
queuelistenerManager.addListener(queueListener);
public class MyProcessor implements MessageProcessor
{
@Override
public void processMessage(Message message)
{
System.out.println("in process!!!!");
JMSBytesMessage bytesMessage = (JMSBytesMessage) message;
try
{
ByteBuffer bb = bytesMessage.getData();
int len = bb.capacity();
byte[] msgbytes = new byte[len];
bb.get(msgbytes, 0, len);//这里需要将字节信息节取出来,然后根据字段格式进行截取。
//INT32 code1;
int code1= byte2Int(msgbytes, offset, ByteOrder.LITTLE_ENDIAN);
}catch(Exception e){
}
}
public static int byte2Int(byte[] bytes, int offset, ByteOrder order)
{
ByteBuffer buffer = ByteBuffer.wrap(bytes, offset, 4);
buffer.order(order);
return buffer.getInt();
}
}