ActiveMQ OpenWire C API问题

时间:2011-07-11 21:09:29

标签: c api activemq

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

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

不起作用,问题在于WireFormat魔术代码,请参阅日志中的调试行:

2011-07-07 15:35:30,324 |调试|发送: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 |调试|使用min of local: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]}和remote: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 |调试|收到的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 |调试|协商前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 |调试|传输失败:java.io.IOException:远程有线格式魔术无效| org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport:tcp:///127.0.0.1:51606

我调试了客户端并捕获了发送给代理的值,15个字节,我将在下面列出: 1:'\ 001' 2:'\ 001' 3:'\ 000' 4:'A' 5:'c' 6:'t' 7:'我' 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 个答案:

答案 0 :(得分:1)

OpenWire C API并非由任何人维护,因此它的破坏并不奇怪。如果你真的嫁给了使用C的话,你可以尝试使用ActiveMQ svn repo中的ActiveMQ-CPP的C包装器。