Как использовать ECF JMS/ActiveMQ провайдера с удаленными сервисами?

Чтобы сделать OSGI-сервис доступным для удаленного доступа, я бы хотел использовать JMS-брокер ActiveMQ в качестве поставщика распространения в рамках ECF. Какие шаги я должен предпринять?

1 ответ

Решение

Я отвечу на свой вопрос, чтобы задокументировать его.

  1. Получите минимальное рабочее рабочее пространство удаленной службы ECF с ecf.generic.server в качестве дистрибутива и одним из провайдеров обнаружения (например, zookeeper). Вы можете использовать учебное пособие http://wiki.eclipse.org/EIG:Getting_Started_with_OSGi_Remote_Services.

  2. Установите брокер ActiveMQ с конфигурацией по умолчанию.

  3. Загрузите поставщиков JMS/ActiveMQ ECF с веб-сайта https://github.com/ECF/JMS. Добавить org.eclipse.ecf.provider.jms а также org.eclipse.ecf.provider.jms.activemq проекты в вашей рабочей области, сборка и добавление их в вашу конфигурацию запуска или целевой платформы.

  4. Для свойств службы провайдера внесите следующие изменения:

    а. Изменить "service.exported.configs" собственность как "ecf.jms.activemq.tcp.client"

    б. добавлять "ecf.endpoint.connecttarget.id" свойство со следующим значением "tcp://[ACTIVEMQ_IP]:61616/rs_topic", заменив [ACTIVEMQ_IP] на IP-адрес брокера. Вы также можете изменить название темы как нечто связанное с вашим сервисом.

  5. Теперь нам также нужен контейнер ActiveMQ JMS Server. Добавьте следующий код на стороне поставщика. Используйте Активатор или запустите новый компонент с помощью DS. Вы также можете получить IContainerFactory объект из реестра услуг.

    IContainerFactory containerFactory = ContainerFactory.getDefault();
    containerFactory.createContainer("ecf.jms.activemq.tcp.manager", 
    new Object[] { "tcp://[ACTIVEMQ_IP]:61616/rs_topic" });
    
Другие вопросы по тегам