I am trying to set up a connection with QuickFIX/J 2.1 towards Bloomberg for different sessions (EMSX, FIX, FX etc), but can’t connect. I receive different error messages but mostly:

An existing connection was forcibly closed by the remote host.

Bloomberg have changed their handshake configuration from SSL to TLS recently. I am trying to log on with below settings:

[Default]
ConnectionType=initiator
LogonTimeout=30
ReconnectInterval=30
ResetOnLogon=N
SocketConnectPort=xxxx
SocketConnectHost=xx.xxx.xxx.xx
SenderCompID=MAP_xxxx_BETA

[SESSION]
#SettingsspecificallyforFXFI
BeginString=FIX.4.4
TargetCompID=MAP_xxx_BETA
HeartBtInt=60
DataDictionary=FIX44.xml
UseDataDictionary=Y
StartTime=09:00:00 Europe/Stockholm
EndTime=23:00:00 Europe/Stockholm
SocketKeyStore=D:BBcert.jks
SocketKeyStorePassword=xxxxxxxxxxxxxx
CheckLatency=N
MaxLatency=240
FileStorePath=messageslogincoming
FileLogPath=messageslogoutgoing
EnabledProtocols=TLSv1.2
TargetSubID=BLOOMTest
ConnectionType=initiator
LogonTimeout=30
ReconnectInterval=30
ResetOnLogon=N
SocketConnectPort=xxxx
SocketConnectHost=xx.xxx.xxx.xx
SenderCompID=MAP_xxxx_BETA    

Any suggestions?

6

From an example that works

[DEFAULT]
ConnectionType=initiator
ReconnectInterval=30
StartTime=00:00:00
EndTime=00:00:00
ResetOnLogon=Y
ResetOnLogout=Y
ResetOnDisconnect=Y
UseLocalTime=N
FileLogPath=FixQuickFixFilesBloombergFxgoxxxxxxLogs
FileStorePath=FixQuickFixFilesBloombergFxgoxxxxxStore

[SESSION]
BeginString=FIX.4.4
SenderCompID=xxxxxxxx
TargetCompID=xxxxxxxx
TargetLocationID=FXEM
SessionQualifier=Fxgo1
HeartBtInt=30
SocketConnectHost=xx.xx.xx.xx
SocketConnectPort=xxxx
DataDictionary=FixQuickFixFilesBloombergFxgoxxxxxDataDictionaryMAP_v2.0_QuickFIX_FXGO.xml
SSLEnable=Y
SSLProtocols=Tls12
SSLValidateCertificates=N
SSLCertificate=FixQuickFixFilesBloombergFxgoxxxxxTlsCertspkcs12cert.pfx
SSLCertificatePassword=xxxxxxxxxxxxxxxxxxxxxxxx

It appears you are missing the following setting in your [SESSION] configuration:

SocketUseSSL=Y

From the configuration for QuickFIX/J docu:

SocketUseSSL: Enables SSL usage for QFJ acceptor or initiator.

By which they mean either SSL or TLS really, whichever you have enabled with the EnabledProtocols setting.

5