SBE es una presentación OSI de capa 6 para codificar y decodificar mensajes de aplicaciones binarias para aplicaciones financieras de baja latencia. Este repositorio contiene las implementaciones de referencia en Java, C++, Golang, C# y Rust.
Se pueden encontrar más detalles sobre el diseño y uso de SBE en la Wiki.
Puede encontrar un XSD para especificaciones SBE aquí. Dirija sus preguntas sobre la especificación a la comunidad SBE FIX.
Para obtener la información y los cambios más recientes, consulte el Registro de cambios con descargas en Maven Central.
Las implementaciones de Java y C++ SBE funcionan de manera muy eficiente con el sistema de mensajería Aeron para comunicaciones de baja latencia y alto rendimiento. La implementación de Java SBE depende de Agrona para sus implementaciones de búfer. El soporte comercial está disponible en [email protected].
Los binarios y la información de dependencia de Maven, Ivy, Gradle y otros se pueden encontrar en http://search.maven.org.
Ejemplo para Maven:
< dependency >
< groupId >uk.co.real-logic</ groupId >
< artifactId >sbe-all</ artifactId >
< version >${sbe.tool.version}</ version >
</ dependency >
Construya el proyecto con Gradle usando este archivo build.gradle.
Construcción completamente limpia:
$ ./gradlew
Ejecute los ejemplos de Java
$ ./gradlew runJavaExamples
Los archivos jar para el ejecutable, fuente y javadoc de los distintos módulos se pueden encontrar en los siguientes directorios:
sbe-benchmarks/build/libs
sbe-samples/build/libs
sbe-tool/build/libs
sbe-all/build/libs
Un ejemplo para ejecutar un Jar desde la línea de comando usando el jar 'todo' que incluye la dependencia de 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
NOTA: Linux, Mac OS y Windows sólo por el momento. Ver preguntas frecuentes. Las compilaciones de Windows se han probado con Visual Studio Express 12.
Para mayor comodidad, el script cppbuild
realiza una limpieza, compilación y prueba completa de todos los objetivos como una compilación de lanzamiento.
$ ./cppbuild/cppbuild
Si se siente cómodo usando CMake, entonces una limpieza, compilación y prueba completas se ve así:
$ mkdir -p cppbuild/Debug
$ cd cppbuild/Debug
$ cmake ../..
$ cmake --build . --clean-first
$ ctest
Nota : La compilación de C++ incluye el generador de C. Actualmente, el generador de C es un trabajo en progreso.
Primero compila usando Gradle para generar el jar SBE y luego úsalo para generar el código golang para realizar pruebas.
$ ./gradlew
$ ./gradlew generateGolangCodecs
Para mayor comodidad en Linux, se proporciona un gnu Makefile que ejecuta algunas pruebas y contiene algunos ejemplos.
$ cd gocode
# make # test, examples, bench
Go admite tanto la generación de estructuras Go con métodos de codificación/decodificación como pesos mosca como los otros lenguajes. Las estructuras se generan de forma predeterminada por motivos de compatibilidad. Establezca sbe.go.generate.generate.flyweights=true
para generar pesos mosca.
Los usuarios del código generado por Golang deben consultar la documentación del usuario.
Los desarrolladores que deseen mejorar el generador de golang deben consultar la documentación para desarrolladores.
Los usuarios de código generado por CSharp deben consultar la documentación del usuario.
Los desarrolladores que deseen mejorar el generador CSharp deben consultar la documentación para desarrolladores.
El generador SBE Rust producirá cajas de óxido 100% seguras (no se generará ningún código unsafe
). Las cajas generadas no dependen de ninguna biblioteca (incluidas las bibliotecas SBE). Si aún no tiene Rust instalado, consulte Rust: Primeros pasos
Generar los códecs de Rust
$ ./gradlew generateRustCodecs
Ejecute la prueba de Rust desde Gradle
$ ./gradlew runRustTests
O ejecute la prueba directamente con Cargo
$ cd rust
$ cargo test
Copyright 2013-2024 Real Logic Limited.
Copyright 2017 MarketFactory Inc.
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puede utilizar este archivo excepto de conformidad con la Licencia. Puede obtener una copia de la Licencia en
https://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer el idioma específico que rige los permisos y limitaciones de la Licencia.