Rather than the supplied QPID Ruby bindings I would prefer to use a native Ruby implementation since then the bindings would work in JRuby and be portable to other AMQP implementations.
However when trying [tmm1-amqp][1] with M4 and trunk I am seeing the below errors. tmm1-amqp supports version 0-8 of the AMQP protocol, which based on the QPID documentation the java broker should support the 0-8 spec. Are there any specific configuration changes which need to be made for the broker to support 0-8 clients? tmm1-amqp is tested against RabbitMQ, so the problem could lie in a difference between RabbitMQ and QPID. Any help in tracking down the cause of the problem would be appreciated. thanks, Jesse ## on the client java.nio.BufferUnderflowException (Hexdump: CE) in inspect java.lang.IllegalArgumentException (Hexdump: 00 00 00 0F 00 32 00 0A 00 00 03 74 77 6F 10 00 00 00 00 CE 01 00 03 00 00 00 1C 00 3C 00 14 00 00 03 74 77 6F 10 74 77 6F 2D 34 35 34 32 32 33 32 37 35 37 35 37 0A CE) in inspect java.lang.IllegalArgumentException (Hexdump: 00 00 00 0F 00 32 00 0A 00 00 03 74 77 6F 10 00 00 00 00 CE 01 00 03 00 00 00 1C 00 3C 00 14 00 00 03 74 77 6F 10 74 77 6F 2D 34 33 39 38 30 37 33 35 30 35 36 34 0A CE) in inspect java.lang.IllegalArgumentException (Hexdump: 00 00 00 0F 00 32 00 0A 00 00 03 74 77 6F 10 00 00 00 00 CE 01 00 03 00 00 00 1B 00 3C 00 14 00 00 03 74 77 6F 0F 74 77 6F 2D 38 35 31 31 38 39 31 36 34 31 34 0A CE) in inspect ## on the server M4 2009-04-23 15:02:08,748 ERROR [pool-1-thread-4] protocol.AMQPFastProtocolHandler (AMQPFastProtocolHandler.java:217) - Exception caught in/127.0.0.1:44681(guest), closing session explictly: org.apache.mina.filter.codec.ProtocolDecoderException: java.lang.IllegalArgumentException (Hexdump: 00 00 00 0F 00 32 00 0A 00 00 03 74 77 6F 10 00 00 00 00 CE 01 00 03 00 00 00 1C 00 3C 00 14 00 00 03 74 77 6F 10 74 77 6F 2D 33 37 33 33 30 35 39 31 34 36 38 37 0A CE) org.apache.mina.filter.codec.ProtocolDecoderException: java.lang.IllegalArgumentException (Hexdump: 00 00 00 0F 00 32 00 0A 00 00 03 74 77 6F 10 00 00 00 00 CE 01 00 03 00 00 00 1C 00 3C 00 14 00 00 03 74 77 6F 10 74 77 6F 2D 33 37 33 33 30 35 39 31 34 36 38 37 0A CE) at org.apache.mina.filter.codec.QpidProtocolCodecFilter.messageReceived(QpidProtocolCodecFilter.java:158) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362) at org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:54) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800) at org.apache.qpid.pool.Event$ReceivedEvent.process(Event.java:86) at org.apache.qpid.pool.Job.processAll(Job.java:114) at org.apache.qpid.pool.Job.run(Job.java:153) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.IllegalArgumentException at java.nio.Buffer.limit(Buffer.java:249) at org.apache.mina.common.FixedSizeByteBufferAllocator$FixedSizeByteBuffer.limit(FixedSizeByteBufferAllocator.java:196) at org.apache.qpid.framing.FieldTable.<init>(FieldTable.java:72) at org.apache.qpid.framing.FieldTableFactory.newFieldTable(FieldTableFactory.java:34) at org.apache.qpid.framing.EncodingUtils.readFieldTable(EncodingUtils.java:652) at org.apache.qpid.framing.amqp_8_0.AMQMethodBody_8_0.readFieldTable(AMQMethodBody_8_0.java:95) at org.apache.qpid.framing.amqp_8_0.BasicConsumeBodyImpl.<init>(BasicConsumeBodyImpl.java:81) at org.apache.qpid.framing.amqp_8_0.BasicConsumeBodyImpl$1.newInstance(BasicConsumeBodyImpl.java:47) at org.apache.qpid.framing.amqp_8_0.MethodRegistry_8_0.convertToBody(MethodRegistry_8_0.java:298) at org.apache.qpid.framing.AMQMethodBodyFactory.createBody(AMQMethodBodyFactory.java:43) at org.apache.qpid.framing.AMQFrame.<init>(AMQFrame.java:42) at org.apache.qpid.framing.AMQDataBlockDecoder.createAndPopulateFrame(AMQDataBlockDecoder.java:104) at org.apache.qpid.framing.AMQDataBlockDecoder.decode(AMQDataBlockDecoder.java:118) at org.apache.qpid.codec.AMQDecoder.doDecodeDataBlock(AMQDecoder.java:133) at org.apache.qpid.codec.AMQDecoder.doDecode(AMQDecoder.java:100) at org.apache.qpid.codec.AMQDecoder.decode(AMQDecoder.java:208) at org.apache.mina.filter.codec.QpidProtocolCodecFilter.messageReceived(QpidProtocolCodecFilter.java:147) ... 9 more ## on the server trunk 2009-04-23 15:00:12,631 ERROR [pool-1-thread-5] protocol.AMQPFastProtocolHandler (AMQPFastProtocolHandler.java:217) - Exception caught in/127.0.0.1:52805(guest), closing session explictly: org.apache.mina.filter.codec.ProtocolDecoderException: java.nio.BufferUnderflowException (Hexdump: CE) org.apache.mina.filter.codec.ProtocolDecoderException: java.nio.BufferUnderflowException (Hexdump: CE) at org.apache.mina.filter.codec.QpidProtocolCodecFilter.messageReceived(QpidProtocolCodecFilter.java:158) at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:362) at org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:54) at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:800) at org.apache.qpid.pool.Event$ReceivedEvent.process(Event.java:86) at org.apache.qpid.pool.Job.processAll(Job.java:114) at org.apache.qpid.pool.Job.run(Job.java:153) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) Caused by: java.nio.BufferUnderflowException at java.nio.Buffer.nextGetIndex(Buffer.java:404) at java.nio.HeapByteBuffer.getInt(HeapByteBuffer.java:336) at org.apache.mina.common.FixedSizeByteBufferAllocator$FixedSizeByteBuffer.getInt(FixedSizeByteBufferAllocator.java:357) at org.apache.mina.common.ByteBuffer.getUnsignedInt(ByteBuffer.java:725) at org.apache.qpid.framing.EncodingUtils.readFieldTable(EncodingUtils.java:645) at org.apache.qpid.framing.amqp_8_0.AMQMethodBody_8_0.readFieldTable(AMQMethodBody_8_0.java:95) at org.apache.qpid.framing.amqp_8_0.BasicConsumeBodyImpl.<init>(BasicConsumeBodyImpl.java:81) at org.apache.qpid.framing.amqp_8_0.BasicConsumeBodyImpl$1.newInstance(BasicConsumeBodyImpl.java:47) at org.apache.qpid.framing.amqp_8_0.MethodRegistry_8_0.convertToBody(MethodRegistry_8_0.java:298) at org.apache.qpid.framing.AMQMethodBodyFactory.createBody(AMQMethodBodyFactory.java:43) at org.apache.qpid.framing.AMQFrame.<init>(AMQFrame.java:42) at org.apache.qpid.framing.AMQDataBlockDecoder.createAndPopulateFrame(AMQDataBlockDecoder.java:104) at org.apache.qpid.framing.AMQDataBlockDecoder.decode(AMQDataBlockDecoder.java:118) at org.apache.qpid.codec.AMQDecoder.doDecodeDataBlock(AMQDecoder.java:133) at org.apache.qpid.codec.AMQDecoder.doDecode(AMQDecoder.java:100) at org.apache.qpid.codec.AMQDecoder.decode(AMQDecoder.java:208) at org.apache.mina.filter.codec.QpidProtocolCodecFilter.messageReceived(QpidProtocolCodecFilter.java:147) ... 9 more [1]: http://github.com/tmm1/amqp/tree/master --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:[email protected]
