Currently, you need to provide the a string which has all default and session level settings in the quickfixj.server.configString property. This doesn't allow you to leverage boot's ability to override yaml properties and violates DRY.
You would need to provide the same value with slight differences for each env (dev, uat, prod)
In the below proposed approach, DRY is respected and we leverage boot's ability to override the sessions property.
The proposed properties are under
'''
quickfixj:
server:
config:
''''
Proposed properties are:
- default property which is a string. The dev would put all the default settings here in 1 single string. This property should be populated in application.yaml and should not be overridden in application-uat.yml etc to respect DRY
- sessions property which is a list of the individual session level settings. This property would be overridden in application-uat.yml etc. Session level sessions tend to change for each env so this doesn't violate DRY.
-- create well known properties for the typical session level quickfixj properties
-- create a catch all map property named additionalSessionSettings for venue specific settings that we just add to the session and assume the dev knows what they are doing
Proposed example
'''
quickfixj:
server:
config:
default: defaultSettings
sessions:
-
name: -- used in code to identify the session's settings
beginString: FIXT.1.1
targetCompId: Venue1
socketConnectHost: someip
socketConnectPort: 9876
additionalSessionSettings:
setting1: value
setting2: value2
-
name: venue2
beginString: FIXT.1.1
targetCompId: VenueCompId
socketConnectHost: someip
socketConnectPort: 9876
---------------------------------
Additionally,
Initiator or Acceptor is determined by
quickfixj:
client:
vs.
quickfixj:
server:
Don't need it in the configString. Violates DRY and could cause bug/confusion if they have diff values.
ConnectionType=initiator
-----------------------------
Finally, I believe quickfixjserver property should be renamed quickfixj unless this property is only for the server. I'm not clear on that.
management:
health:
quickfixjserver:
enabled: true
Currently, you need to provide the a string which has all default and session level settings in the quickfixj.server.configString property. This doesn't allow you to leverage boot's ability to override yaml properties and violates DRY.
You would need to provide the same value with slight differences for each env (dev, uat, prod)
In the below proposed approach, DRY is respected and we leverage boot's ability to override the sessions property.
The proposed properties are under
'''
quickfixj:
server:
config:
''''
Proposed properties are:
-- create well known properties for the typical session level quickfixj properties
-- create a catch all map property named additionalSessionSettings for venue specific settings that we just add to the session and assume the dev knows what they are doing
Proposed example
'''
quickfixj:
server:
config:
default: defaultSettings
sessions:
-
name: -- used in code to identify the session's settings
beginString: FIXT.1.1
targetCompId: Venue1
socketConnectHost: someip
socketConnectPort: 9876
additionalSessionSettings:
setting1: value
setting2: value2