c - ActiveMQ OpenWire C API问题

标签 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 | org.apache.activemq.transport.WireFormatNegotiator ActiveMQ 任务 2 2011-07-07 15:35:30,327 |调试|使用本地最小值: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]} 和远程: WireFormatInfo { version=1297154048,properties={}, magic=[^A,^@,A,c,t,i,v, e]} | org.apache.activemq.transport.InactivityMonitor | org.apache.activemq.transport.InactivityMonitor | ActiveMQ 传输: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 | org.apache.activemq.transport.WireFormatNegotiator ActiveMQ 传输: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 | org.apache.activemq.transport.WireFormatNegotiator ActiveMQ 传输:tcp:///127.0.0.1:51606 2011-07-07 15:35:30,337 |调试|传输失败:java.io.IOException:远程有线格式魔法无效 | org.apache.activemq.broker.TransportConnection.Transport | 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:“我” 8:“v” 9:“e” 10:'M' 11:“问” 12:'\000' 13:'\000' 14:'\000' 15:'\002' 这里最后四个字节是版本,设置为2

不知何故,此消息被经纪人转移/误解,因此魔术 token 和版本是错误的。

还有一条信息:我使用提供的版本 ow_commands_v1.[ch] 和 ow_commands_v2.[ch] 编译了 libopenwire,因此我尝试将测试与这两个版本链接起来,结果与任一版本相同。有谁知道两个版本的原因吗?我应该使用哪一个?

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

最佳答案

OpenWire C API 没有由任何人维护,因此它被破坏也就不足为奇了。 ActiveMQ svn 存储库中有一个用于 ActiveMQ-CPP 的 C 包装器,如果您真的愿意使用 C,您可以尝试使用它。

关于c - ActiveMQ OpenWire C API问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6656599/

相关文章:

java - 当其他消费者正在处理消息时,ActiveMQ onmessage 被阻塞

c - 在二叉树删除方法中得到奇怪的结果

c - gcc:如何避免对程序集中定义的函数发出 "used but never defined"警告

c - 命名共享内存 Windows api c++

c# - 使用 Mailgun 批量发送和单独的消息 ID

python - python是facebook开发的稳定平台吗?

java - 使用 ActiveMQ 发送 JSON 文件

c - 将来调用函数

php - 在刷卡器中从 php 加载图像时出现空错误

jvm - 端口绑定(bind)异常启动activemq