ActiveMQ OpenWire C API проблема - PullRequest
0 голосов
/ 12 июля 2011

Я запускаю брокер ActiveMQ 5.5.0 в Ubuntu, скачал и скомпилировал 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 {версия = 7, свойства = {CacheSize = 1024, CacheEnabled = истина, SizePrefixDisabled = ложь, MaxInactivityDurationInitalDelay = 10000, TcpNoDelayEnabled = истина, MaxInactivityDuration = 30000, TightEncodingEnckText = true, magic_Edable = = , t, i, v, e, M, Q]} | org.apache.activemq.transport.WireFormatNegotiator | ActiveMQ Task-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, TightEncableEck A, c, t, i, v, e, M, Q]} и удаленный: WireFormatInfo {version = 1297154048, properties = {}, magic = [^ A, ^ @, A, c, t, i, v, е]} | org.apache.activemq.transport.InactivityMonitor | ActiveMQ Transport: tcp: ///127.0.0.1: 51606 2011-07-07 15: 35: 30,327 | ОТЛАДКА | Получено WireFormat: WireFormatInfo {версия = 1297154048, свойства = {}, магия = [^ 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 ,ightEncodingEnabled = 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: «А» 5: с 6: 'т' 7: «я» 8: 'v' 9: «е» 10: 'M' 11: 'Q' 12: '\ 000' 13: '\ 000' 14: '\ 000' 15: '\ 002' здесь последние четыре байта - версия, которая установлена ​​в 2

Каким-то образом это сообщение смещено / неверно истолковано брокером, поэтому магический токен и версия неверны.

Еще одна информация: я скомпилировал libopenwire, используя обе предоставленные версии ow_commands_v1. [Ch] и ow_commands_v2. [Ch], поэтому я попытался связать тест с обеими, результат одинаков с любой версией. Кто-нибудь знает причину двух версий? какой я должен использовать?

Примечание: это сообщение было опубликовано несколько дней назад на форуме apache, но ответа нет. Надеюсь на этом сайте сообщение получит больше трафика.

1 Ответ

1 голос
/ 12 июля 2011

OpenWire C API не поддерживается никем, поэтому неудивительно, что он не работает.В ActiveMQ svn repo есть оболочка C для ActiveMQ-CPP, которую вы можете попробовать использовать вместо этого, если вы действительно женаты на использовании C.

...