2011-07-11 56 views
0

我在Ubuntu上运行ActiveMQ 5.5.0代理,下载并编译了APR 1.4.5和C API相关的libactivmq和libopenwire。ActiveMQ OpenWire C API问题

在实例中提供的测试C: http://svn.apache.org/repos/asf/activemq/sandbox/openwire-c/src/examples/

不工作,问题是与WireFormat魔码,看到从日志调试行:

2011-07-07 15:35 :30,324 | DEBUG |发送:WireFormatInfo {version = 7,properties = {CacheSize = 1024,CacheEnabled = true,SizePrefixDisabled = false,MaxInactivityDurationInitalDelay = 10000,TcpNoDelayEnabled = true,MaxInactivityDuration = 30000,TightEncodingEnabled = true,StackTraceEnabled = true},magic = [A,c ,t,i,v,e,M,Q]} | org.apache.activemq.transport.WireFormatNegotiator | ActiveMQ任务-2 2011-07-07 15:35:30,327 | DEBUG |使用本地最小值:WireFormatInfo {version = 7,properties = {CacheSize = 1024,CacheEnabled = true,SizePrefixDisabled = false,MaxInactivityDurationInitalDelay = 10000,TcpNoDelayEnabled = true,MaxInactivityDuration = 30000,TightEncodingEnabled = true,StackTraceEnabled = true} A,c,t,i,v,e,M,Q]}和远程:WireFormatInfo {version = 1297154048,properties = {},magic = [^ A,^ @,A,c,t,i,v, e]} | org.apache.activemq.transport.InactivityMonitor | ActiveMQ Transport:tcp:///127.0.0.1:51606 2011-07-07 15:35:30,327 | DEBUG |已收到WireFormat:WireFormatInfo {version = 1297154048,properties = {},magic = [^ A,^ @,A,c,t,i,v,e]} | org.apache.activemq.transport.WireFormatNegotiator | ActiveMQ Transport:tcp:///127.0.0.1:51606 2011-07-07 15:35:30,333 | DEBUG |协商之前的tcp:///127.0.0.1:51606:OpenWireFormat {version = 7,cacheEnabled = false,stackTraceEnabled = false,tightEncodingEnabled = false,sizePrefixDisabled = false} org.apache.activemq.transport.WireFormatNegotiator | ActiveMQ Transport:tcp:///127.0.0.1:51606 2011-07-07 15:35:30,337 | DEBUG |传输失败:java.io.IOException:远程连线格式魔术无效| org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ的运输:TCP:///127.0.0.1:51606

我调试发送给代理客户端和捕获的值,15个字节,我将列出他们下面: 1: '\ 001' 2:' \ 001' 3: '\ 000' 4: 'A' 5: 'C' 6: 'T' 7: 'i' 的 8: 'v' 9: 'e' 的 10:” M” 11: 'Q' 12: '\ 000' 13: '\ 000' 14: '\ 000' 15: '\ 002' 这里最后四个字节是版本,其被设置为2

不知何故,这条消息被经纪人转移/误解,所以魔术记号和版本都是错误的。

还有一条信息:我使用提供的版本ow_commands_v1。[ch]和ow_commands_v2。[ch]编译libopenwire,所以我试图将测试与两者联系起来,结果与任一版本都是一样的。有谁知道两个版本的原因?我应该使用哪一个?

注意:此消息已在前几天发布在apache论坛上,但没有回应。我希望在这个网站上留言会获得更多的流量。

回答

1

OpenWire C API不是由任何人维护的,所以它的破解并不令人惊讶。在ActiveMQ svn仓库中有ActiveMQ-CPP的C包装,你可以尝试使用它,如果你真的已经结婚使用C了。