SBE — это представление уровня 6 OSI для кодирования и декодирования двоичных сообщений приложений для финансовых приложений с малой задержкой. Этот репозиторий содержит эталонные реализации на Java, C++, Golang, C# и Rust.
Более подробную информацию о конструкции и использовании SBE можно найти на Wiki.
XSD для спецификаций SBE можно найти здесь. Вопросы о спецификации обращайтесь к сообществу SBE FIX.
Сведения о последней версии и изменениях см. в журнале изменений с загрузками на Maven Central.
Реализации SBE на Java и C++ очень эффективно работают с системой обмена сообщениями Aeron, обеспечивая низкую задержку и высокую пропускную способность. Реализация Java SBE зависит от Agrona в реализации буферов. Коммерческую поддержку можно получить по адресу [email protected].
Двоичные файлы и информацию о зависимостях для Maven, Ivy, Gradle и других можно найти по адресу http://search.maven.org.
Пример для Maven:
< dependency >
< groupId >uk.co.real-logic</ groupId >
< artifactId >sbe-all</ artifactId >
< version >${sbe.tool.version}</ version >
</ dependency >
Создайте проект с помощью Gradle, используя этот файл build.gradle.
Полная чистая сборка:
$ ./gradlew
Запустите примеры Java
$ ./gradlew runJavaExamples
Файлы jar для исполняемого файла, исходного кода и javadoc для различных модулей можно найти в следующих каталогах:
sbe-benchmarks/build/libs
sbe-samples/build/libs
sbe-tool/build/libs
sbe-all/build/libs
Пример выполнения Jar из командной строки с использованием jar «all», который включает зависимость Agrona:
java -Dsbe.generate.ir=true -Dsbe.target.language=Cpp -Dsbe.target.namespace=sbe -Dsbe.output.dir=include/gen -Dsbe.errorLog=yes -jar sbe-all/build/libs/sbe-all-${SBE_TOOL_VERSION}.jar my-sbe-messages.xml
ПРИМЕЧАНИЕ. Linux, Mac OS и Windows доступны только на данный момент. См. Часто задаваемые вопросы. Сборки Windows были протестированы с помощью Visual Studio Express 12.
Для удобства сценарий cppbuild
выполняет полную очистку, сборку и тестирование всех целевых объектов в виде сборки выпуска.
$ ./cppbuild/cppbuild
Если вам удобно использовать CMake, то полная очистка, сборка и тестирование будут выглядеть так:
$ mkdir -p cppbuild/Debug
$ cd cppbuild/Debug
$ cmake ../..
$ cmake --build . --clean-first
$ ctest
Примечание . Сборка C++ включает генератор C. В настоящее время работа над генератором C находится в стадии разработки.
Сначала создайте с помощью Gradle файл jar SBE, а затем используйте его для создания кода golang для тестирования.
$ ./gradlew
$ ./gradlew generateGolangCodecs
Для удобства работы в Linux предоставляется Makefile gnu, который запускает некоторые тесты и содержит несколько примеров.
$ cd gocode
# make # test, examples, bench
Go поддерживает как генерацию структур Go с помощью методов кодирования/декодирования, так и легковесов, как и другие языки. Структуры генерируются по умолчанию для совместимости. Установите sbe.go.generate.generate.flyweights=true
, чтобы генерировать легковесы.
Пользователи кода, сгенерированного golang, должны ознакомиться с пользовательской документацией.
Разработчикам, желающим улучшить генератор golang, следует ознакомиться с документацией для разработчиков.
Пользователи кода, сгенерированного CSharp, должны ознакомиться с пользовательской документацией.
Разработчикам, желающим улучшить генератор CSharp, следует ознакомиться с документацией для разработчиков.
Генератор ржавчины SBE создаст 100% безопасные ящики с ржавчиной ( unsafe
код генерироваться не будет). Сгенерированные крейты не имеют никаких зависимостей ни от каких библиотек (включая библиотеки SBE). Если у вас еще не установлен Rust, см. Rust: Начало работы.
Сгенерируйте кодеки Rust
$ ./gradlew generateRustCodecs
Запустите тест Rust из Gradle
$ ./gradlew runRustTests
Или запустите тест напрямую с помощью Cargo
$ cd rust
$ cargo test
Авторские права Real Logic Limited, 2013–2024 гг.
Авторские права принадлежат MarketFactory Inc., 2017 г.
Лицензируется по лицензии Apache версии 2.0 («Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу:
https://www.apache.org/licenses/LICENSE-2.0
Если это не требуется действующим законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, явных или подразумеваемых. См. Лицензию для определения конкретного языка, регулирующего разрешения и ограничения в рамках Лицензии.