Как использовать ECF JMS/ActiveMQ провайдера с удаленными сервисами?
Чтобы сделать OSGI-сервис доступным для удаленного доступа, я бы хотел использовать JMS-брокер ActiveMQ в качестве поставщика распространения в рамках ECF. Какие шаги я должен предпринять?
1 ответ
Я отвечу на свой вопрос, чтобы задокументировать его.
Получите минимальное рабочее рабочее пространство удаленной службы ECF с ecf.generic.server в качестве дистрибутива и одним из провайдеров обнаружения (например, zookeeper). Вы можете использовать учебное пособие http://wiki.eclipse.org/EIG:Getting_Started_with_OSGi_Remote_Services.
Установите брокер ActiveMQ с конфигурацией по умолчанию.
Загрузите поставщиков JMS/ActiveMQ ECF с веб-сайта https://github.com/ECF/JMS. Добавить
org.eclipse.ecf.provider.jms
а такжеorg.eclipse.ecf.provider.jms.activemq
проекты в вашей рабочей области, сборка и добавление их в вашу конфигурацию запуска или целевой платформы.Для свойств службы провайдера внесите следующие изменения:
а. Изменить
"service.exported.configs"
собственность как"ecf.jms.activemq.tcp.client"
б. добавлять
"ecf.endpoint.connecttarget.id"
свойство со следующим значением"tcp://[ACTIVEMQ_IP]:61616/rs_topic"
, заменив [ACTIVEMQ_IP] на IP-адрес брокера. Вы также можете изменить название темы как нечто связанное с вашим сервисом.Теперь нам также нужен контейнер ActiveMQ JMS Server. Добавьте следующий код на стороне поставщика. Используйте Активатор или запустите новый компонент с помощью DS. Вы также можете получить
IContainerFactory
объект из реестра услуг.IContainerFactory containerFactory = ContainerFactory.getDefault(); containerFactory.createContainer("ecf.jms.activemq.tcp.manager", new Object[] { "tcp://[ACTIVEMQ_IP]:61616/rs_topic" });