2013-08-28 1 views
3

У меня есть это приложение, используя mqtt-client java library для подключения к брокеру ActiveMQ через mqtt. Подписка, публикация и получение сообщений работают нормально, пока моя тема не имеет косой черты (/).Как избежать специального символа (косая черта) в теме mqtt?

Я понимаю, что косые черты являются специальными символами в mqtt и согласно activemq mqtt support"/" будет преобразован в ".". Однако, в моем случае, мне нужно подключиться к тем, которые были созданы с использованием JMS и которые написаны как uri (пример http://activemq.apache.org/) и поэтому будут иметь «/» на их имена.

Есть ли все-таки, чтобы просмотреть "/" на mqtt? На данный момент, если я пытаюсь подключиться к теме под названием http://activemq.apache.org/ это на самом деле подключиться к http:..activemq.apache.org.

+0

Вы не можете избежать "/"на mqtt, я не уверен, что предложить. – ralight

+1

Это действительно нужно, чтобы кто-то был знаком с реализацией activemq. Ваша проблема связана с тем, как они выбрали переписывание тем - казалось бы, нет возможности остановить это. Если вы не получите полезный ответ здесь, вам следует попробовать через один из каналов поддержки activemq. – knolleary

+0

@knolleary Я проверил их [источник] (https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=activemq-mqtt/src/main/java/ org/apache/activemq/transport/mqtt/MQTTProtocolConverter.java; h = ac598e7c38825b88c233de52b5b81f205797f737; hb = a63a8320eabbe4e988b6d67eb6cf84aa0d294e0a), и они заменяют «/» на «.». Знаете ли вы случайно, если согласно стандарту mqtt, mqtt должен принимать темы с «/», каким-то образом избегающим их имен?Если это так, я могу попытаться внести изменения в источник брокера (или изменить его самостоятельно), иначе я не должен был бы убеждать его здесь не использовать такие имена тем – Thomas

ответ

2

Мое предложение .. Работает только если вы устанавливаете свой собственный ActiveMQ сервис ..

Скачать источник ActiveMQ. . Конверсии происходят в модуле MQTTProtocolConverter. Там вы увидите специальные конверсии. Код изменился в 5.10.0, но, разумеется, вы можете избежать лишних вещей там, и он должен работать. Я изменил код для входящих запросов от MQTT и исходящих.

У меня были подобные проблемы при попытке использовать MQTT, а в разделах есть.. 'S E.G.

MQTT тема /accounts/foobar/users/foo/storage/myText.txt

Это изменяется в текущей реализации в

.accounts.foobar.users. foo.storage.myText.txt

, а затем, когда сообщение принимается от MQTT плагина, тема превращается в

/счета/Foobar/пользователей/Foo/хранение/MYTEXT/TXT

Это не то, что я хотел, так что я должен был изменить конвертер, чтобы избежать ". В результате был JMS toipc превращается в

.accounts.foobar.users.foo.storage.myText \ .txt

который работал ..

+0

Вот что я на самом деле сделал = D Недостатком является то, что код стал несинхронизированным с основной ветвью, но поскольку это было просто для прототипа, это не проблема – Thomas