All Projects → kpavlov → Fixio

kpavlov / Fixio

Licence: apache-2.0
FIX Protocol Support for Netty

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Fixio

Hprose Nodejs
Hprose is a cross-language RPC. This project is Hprose 2.0 for Node.js
Stars: ✭ 297 (+253.57%)
Mutual labels:  tcp-server, tcp-client
Cppserver
Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution
Stars: ✭ 528 (+528.57%)
Mutual labels:  tcp-server, tcp-client
Tacopie
C++ TCP Library - NO LONGER MAINTAINED
Stars: ✭ 359 (+327.38%)
Mutual labels:  tcp-server, tcp-client
EasyFileTransfer
An easy way to transfer file with any size on network with tcp protocol.
Stars: ✭ 30 (-64.29%)
Mutual labels:  tcp-server, tcp-client
Chat Socket
A simple chat room using java socket with the client-server paradigm
Stars: ✭ 24 (-71.43%)
Mutual labels:  tcp-server, tcp-client
Dubbogo
a golang micro-service framework compatible with alibaba dubbo
Stars: ✭ 258 (+207.14%)
Mutual labels:  tcp-server, tcp-client
Bizsocket
异步socket,对一些业务场景做了支持
Stars: ✭ 469 (+458.33%)
Mutual labels:  tcp-server, tcp-client
ctsTraffic
ctsTraffic is a highly scalable client/server networking tool giving detailed performance and reliability analytics
Stars: ✭ 125 (+48.81%)
Mutual labels:  tcp-server, tcp-client
Simpleunitytcp
🖧 Simple Unity Project to show how TCP communication are builded in C# without multi-threading or Unity network (Unet) involved.
Stars: ✭ 22 (-73.81%)
Mutual labels:  tcp-server, tcp-client
Nat Ddns
tcp代理转发工具,可用于内网穿透实现类似花生壳等工具的功能
Stars: ✭ 19 (-77.38%)
Mutual labels:  tcp-server, tcp-client
Socketify
Raw TCP and UDP Sockets API on Desktop Browsers
Stars: ✭ 67 (-20.24%)
Mutual labels:  tcp-server, tcp-client
Silver Sniffle
Ncurses TCP Chat
Stars: ✭ 38 (-54.76%)
Mutual labels:  tcp-server, tcp-client
twjitm-core
采用Netty信息加载实现长连接实时通讯系统,客户端可以值任何场景,支持实时http通讯、webSocket通讯、tcp协议通讯、和udp协议通讯、广播协议等 通过http协议,rpc协议。 采用自定义网络数据包结构, 实现自定义网络栈。
Stars: ✭ 98 (+16.67%)
Mutual labels:  netty, tcp-server
Easytcp
Simple framework for TCP clients and servers. Focused on performance and usability.
Stars: ✭ 60 (-28.57%)
Mutual labels:  tcp-server, tcp-client
CSharpServer
Ultra fast and low latency asynchronous socket server & client C# library with support TCP, SSL, UDP protocols and 10K connections problem solution
Stars: ✭ 101 (+20.24%)
Mutual labels:  tcp-server, tcp-client
Cowboy
Cowboy.Sockets is a C# library for building sockets based services.
Stars: ✭ 364 (+333.33%)
Mutual labels:  tcp-server, tcp-client
machat
An open source chat server implemented in Go
Stars: ✭ 73 (-13.1%)
Mutual labels:  tcp-server, tcp-client
network
exomia/network is a wrapper library around System.Socket for easy and fast TCP/UDP client & server communication.
Stars: ✭ 18 (-78.57%)
Mutual labels:  tcp-server, tcp-client
Netcoreserver
Ultra fast and low latency asynchronous socket server & client C# .NET Core library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution
Stars: ✭ 799 (+851.19%)
Mutual labels:  tcp-server, tcp-client
Tinytcpserver
A small tcp server working under Mono or .NET (4.0) and provides hooks for handling data exchange with clients (works under mono and .net). Behaviour/protocol/reaction could be specified via custom C# script.
Stars: ✭ 14 (-83.33%)
Mutual labels:  tcp-server, tcp-client

fixio - FIX Protocol Support for Netty Build Status Codacy Badge

Overview

Why One More FIX Protocol API

This API is intended to replace well known QuickFIX/J in high-frequency trading scenarios.

Design goals

  1. Implement FIX Protocol Java API with as low memory footprint as possible in order to eliminate unnecessary GC overhead, thus improving overall application performance under high load.
  2. Provide FIX Protocol Codecs for Netty, to make it possible to get rid of Apache Mina which is used by QuickFIX/J as a transport layer.
  3. Avoid using expensive operations:
    • Avoid synchronization.
    • Replace BigDecimals with custom Fixed Point Number implementation for financial data.
    • Reuse java.util.Calendar and java.util.TimeZone instances.

The API has a number of limitations, so it may be not suitable for any FIX application.

Limitations

  1. Logon message encryption is not supported. EncryptMethod(98)=0
  2. XmlData is not supported
  3. Message encodings other than US-ASCII are not supported.
  4. Message resending and resend requests are not supported.
  5. ...

Performance

Currently fixio can beat QuickFix performance in simple scenario. See performance comparison.

Getting Started

  1. Download ZIP archive or clone/fork the repository.
  2. Build and install project artifacts to your local maven repository: mvn clean install
  3. Add the dependency to your project
<dependency>
    <groupId>kpavlov.fixio</groupId>
    <artifactId>core</artifactId>
    <version>1.2</version>
</dependency>

You'll also need a slf4j API implementation at runtime, so please add appropriate dependency, e.g.:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.25</version>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

Examples

You may find working example of client and server applications in module "examples".

I recommend running server with Concurrent Mark Sweep Collector enabled: -XX:+UseConcMarkSweepGC and increased Survivor spaces (-XX:SurvivorRatio=4).

Writing Simple FIX Client

To create a simple FIX client you need to:

  1. Implement FixApplication. You may extend FixApplicationAdapter as a quick start.

  2. Create an instance of FixClient and initialize if with FixApplication you've just created and classpath reference to FIX session settings property file.

  3. Invoke FixClient.connect(host, port) to initiate connection. Method connect(...) returns a ChannelFeature which which will be notified when a channel is closed, so you may invoke the method sync() on it if you wish to wait for connection to be closed.

FixApplication app = new FixApplicationAdapter();
client = new FixClient(app);

// set settings file location related to classpath
client.setSettingsResource("/client.properties");

// connect to specified host and port
ChannelFeature closeFeature = client.connect("localhost", 10201);

// wait until FIX Session is closed
closeFeature.sync();

// Shutdown FIX client
client.disconnect();

SSL Support for Client

You may set a property ssl=true in client.properties file.

Or configure FixSessionSettingsProvider by hand. See FixSessionSettingsProvider.Params.SSL.

You may find more information in User Guide and Wiki pages.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].