1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dengdai68-hrpc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Использование hrpc: spring + zookeeper + netty интегрированный rpc-фреймворк

Конфигурация сервера

Определение интерфейса rpc

    package com.rpc.sample.api;
    // Этот интерфейс открыт для клиентских вызовов
    public interface Animal {
        String sound();
    }

Реализация интерфейса rpc

    package com.rpc.sample.impl;
    import com.rpc.sample.Animal.api;
    public class Dog implements Animal{
        @Override
        public String sound() {
            return "i sound !!!!!";
        }
    }

Экспозиция службы rpc (spring-rpc.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- В заголовке необходимо добавить описание схемы rpc -->
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:rpc="http://rpc.hjk.com/schema/rpc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       http://rpc.hjk.com/schema/rpc http://rpc.hjk.com/schema/rpc.xsd">
        <context:property-placeholder location="classpath:rpc.properties"/>
        <!-- Конфигурация, связанная с центром регистрации zookeeper -->
        <rpc:zookeeper address="${zookeeper.address}" sessionTimeout="${zookeeper.sessionTimeout}" connectionTimeout="${zookeeper.connectionTimeout}"/>
        <!-- Предоставление услуги server с именем testServer, прослушивание порта 1236 -->
        <rpc:server name="testServer" port="1236">
            <!-- Предоставляемые услуги -->
            <rpc:service class="com.rpc.sample.Animal"/>
        </rpc:server>

        <!-- Регистрация компонентов реализации сервиса, также можно зарегистрировать компоненты через аннотации spring -->
        <bean class="com.rpc.sample.impl.Dog"/>
    </beans>

Необходимые файлы конфигурации (rpc.properties)

    zookeeper.address=127.0.0.1:2181
    zookeeper.sessionTimeout=13000
    zookeeper.connectionTimeout=5000

На этом этапе конфигурация службы завершена. Если контейнер обнаруживает эту конфигурацию, он запускает сервер и начинает прослушивать. Если этой конфигурации нет, то прослушивание не запускается. Имя «testServer» используется при распределённом развёртывании. Клиенты также используют это имя для вызова указанного проекта.

Запуск службы сервера

    package com.rpc.sample.impl.com.rpc.sample;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class Server {
        public static void main(String[] args) {
            ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-rpc.xml");
        }
    }

Запуск службы очень прост. Нужно только запустить контейнер Spring, который автоматически регистрирует и слушает службу.

Настройка клиента

Ссылка на службу Spring (spring-rpc.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- В заголовок необходимо добавить описание схемы rpc -->
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:rpc="http://rpc.hjk.com/schema/rpc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
           http://rpc.hjk.com/schema/rpc http://rpc.hjk.com/schema/rpc.xsd">
        <!-- Конфигурация, связанная с центром регистрации zookeeper -->
        <context:property-placeholder location="classpath:rpc.properties"/>
        <!-- Через аннотацию spring регистрируем компоненты (смотрите в соответствии с потребностями вашего проекта) -->
        <context:component-scan base-package="com.rpc.sample.cilent"/>
        <!-- Конфигурация, связанная с центром регистрации zookeeper -->
        <rpc:zookeeper address="${zookeeper.address}"  sessionTimeout="${zookeeper.sessionTimeout}" connectionTimeout="${zookeeper.connectionTimeout}"/>
        <!-- Регистрируем клиент и ссылаемся на службу, testServer должен совпадать с конфигурацией сервера -->
        <rpc:client server="testServer">
            <rpc:interface id="animl" class="com.rpc.sample.Animal"/>
        </rpc:client>
    </beans>

Файлы конфигурации (rpc.properties)

    zookeeper.address=127.0.0.1:2181
    zookeeper.sessionTimeout=13000
    zookeeper.connectionTimeout=5000

Вызов клиентом службы

    package com.rpc.sample.cilent;

    import com.rpc.sample.Animal;
    import org.springframework.beans.factory.annotation.Autowired;

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

RPC-фреймворк, интегрирующий Spring, ZooKeeper и Netty. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dengdai68-hrpc.git
git@api.gitlife.ru:oschina-mirror/dengdai68-hrpc.git
oschina-mirror
dengdai68-hrpc
dengdai68-hrpc
master