Child pages
  • Marketcetera 3.1.0 Open Source Initiative
Skip to end of metadata
Go to start of metadata

Summary

Starting with version 3.1.0, Marketcetera is offering the full stack as open source, licensed under GPLv2. Previously, some artifacts, most notably the DARE (Deploy Anywhere Routing Engine) and the Marketcetera cluster architecture were held back as private, closed-source. Some components remain closed source, like our market data adapters, due to binding non-disclosure agreements with the providers.

We are in the process of making the source archive that houses the previously closed-source components publicly available. This process involves vetting the code itself for FOSS use and reviewing the components that use external licenses to make sure they are compatible for release as open-source.

Download

Download and build the public components.

Prepare your environment: create or edit your Maven settings.xml file. In Unix environments, this file will be at ~/.m2/settings.xml

In order to run the application from the development environment, you must provide two things in settings.xml:

  1. Provide a unique name for metc.exsim.qf.sender.comp.id - anything will do. I've used <name>-<project>-<machine> here, but you can use anything you want.
  2. Provide a database environment. I've included the blocks for Derby, Postgres, MySQL, and Oracle here. Postgres is uncommented here, the rest are disabled by comments. You must set up the database and the user/password, which is not covered in this document.


<settings>
  <profiles>
    <profile>
      <id>default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <mvn.build.number>1</mvn.build.number>
        <!-- Core -->
        <metc.exsim.qf.sender.comp.id>colin-core-callisto</metc.exsim.qf.sender.comp.id>
        <!-- Derby -->
        <!--metc.jdbc.user>metc</metc.jdbc.user>
        <metc.jdbc.password>pw4metc</metc.jdbc.password>
        <metc.jdbc.driver>org.apache.derby.jdbc.EmbeddedDriver</metc.jdbc.driver>
        <metc.jdbc.url>jdbc:derby:target/metc;create=true</metc.jdbc.url>
        <metc.jdbc.testquery>values 1</metc.jdbc.testquery>
        <metc.hibernate.dialect>org.hibernate.dialect.DerbyTenSevenDialect</metc.hibernate.dialect-->
        <!-- Postgres -->
        <metc.jdbc.user>metc</metc.jdbc.user>
        <metc.jdbc.password>pw4metc</metc.jdbc.password>
        <metc.jdbc.driver>org.postgresql.Driver</metc.jdbc.driver>
        <metc.jdbc.url>jdbc:postgresql://127.0.0.1/metc</metc.jdbc.url>
        <metc.jdbc.testquery>select 1</metc.jdbc.testquery>
        <metc.hibernate.dialect>org.hibernate.dialect.PostgreSQLDialect</metc.hibernate.dialect>
        <!-- MySQL -->
        <!-- Do not use MySQL < 5.6 - does not support datetimestamp milliseconds -->
        <!--metc.jdbc.user>metc</metc.jdbc.user>
        <metc.jdbc.password>pw4metc</metc.jdbc.password>
        <metc.jdbc.driver>com.mysql.jdbc.Driver</metc.jdbc.driver>
        <metc.jdbc.url>jdbc:mysql://localhost:3306/metc</metc.jdbc.url>
        <metc.jdbc.testquery>select 1</metc.jdbc.testquery>
        <metc.hibernate.dialect>org.marketcetera.persist.MarketceteraMySQL5Dialect</metc.hibernate.dialect -->
        <!-- Oracle -->
        <!--metc.jdbc.user>metc</metc.jdbc.user>
        <metc.jdbc.password>pw4metc</metc.jdbc.password>
        <metc.jdbc.driver>oracle.jdbc.driver.OracleDriver</metc.jdbc.driver>
        <metc.jdbc.url>jdbc:oracle:thin:@10.10.25.180:1521:xe</metc.jdbc.url>
        <metc.jdbc.testquery>select 1 from DUAL</metc.jdbc.testquery>
        <metc.hibernate.dialect>org.hibernate.dialect.Oracle10gDialect</metc.hibernate.dialect-->
      </properties>
    </profile>
  </profiles>
</settings>


Download the newly released components:

$ cd ~/marketcetera/workspaces/base/code
$ wget -O private.zip "https://metc-source.s3.amazonaws.com/3.1.0/private.zip?AWSAccessKeyId=0BE1WRCKRJH2ZKPPX0G2&Expires=1570721807&Signature=PVg4Z9LPQ5sVUffQM7KePDLcfqE%3D"
$ unzip private.zip
$ cd private
$ mvn -DskipTests install eclipse:eclipse

Run the application:

$ cd ~/marketcetera/workspaces/base/code/private/source/ors
$ mvn -PexecuteDBInit exec:java &
$ tail -f target/logs/dare-instance1.log

Look for the following in the log:

10 Oct 2018 08:00:46,298  INFO [hz.matp.event-3] metc.brokers (BrokerServiceImpl.java:1408) - 
+---------+-----------+
! Brokers !  host1-1  !
+---------+-----------+
!  exsim  ! available !
+---------+-----------+
10 Oct 2018 08:00:46,300 DEBUG [OrderMessageProcessingQueue-FIXT.1.1:colin-core-callisto->MRKTC-EXCH - FIXT.1.1:colin-core-callisto->MRKTC-EXCH] ors.brokers.Broker (Broker.java:305) - Analyzed QuickFIX/J message:
Validation error
 Invalid MsgType, field=-1
Header
 BeginString [8] = FIXT.1.1
 BodyLength [9] = 97
 MsgSeqNum [34] = 1
 MsgType [35] = LOGON [A]
 SenderCompID [49] = MRKTC-EXCH
 SendingTime [52] = 20181010-15:00:46.342
 TargetCompID [56] = colin-core-callisto
Body
 null [98] = 0
 null [108] = 30
 null [141] = Y
 null [1,137] = 9
Trailer
 CheckSum [10] = 003
10 Oct 2018 08:00:46,306  INFO [OrderMessageProcessingQueue-FIXT.1.1:colin-core-callisto->MRKTC-EXCH - FIXT.1.1:colin-core-callisto->MRKTC-EXCH] marketcetera.ors.QuickFIXApplication (QuickFIXApplication.java:1524) - Sending reply 'FIX Response:{BrokerID=exsim,Originator=Broker,Hierarchy=Flat,FIX Message=8=FIXT.1.19=9735=A34=149=MRKTC-EXCH52=20181010-15:00:46.34256=colin-core-callisto98=0108=30141=Y1137=910=003,ActorUserID=null,ViewerUserID=null}' from QuickFIX/J application
10 Oct 2018 08:00:46,330  INFO [QF/J Session dispatcher: FIXT.1.1:colin-core-callisto->MRKTC-EXCH] marketcetera.ors.QuickFIXApplication (QuickFIXApplication.java:1436) - Sending logon status 'true' for broker 'ID 'exsim'; name 'MATP Exchange Simulator'; session 'FIXT.1.1:colin-core-callisto->MRKTC-EXCH'' from QuickFIX/J application
10 Oct 2018 08:00:54,173  INFO [pool-9-thread-1] marketcetera.core.SystemInformationLogger (SystemInformationLogger.java:145) - 
+---------------------------+
!       Ports in Use        !
+---------------------------+
! Port !    Description     !
+------+--------------------+
! 9000 !    Web Service     !
+------+--------------------+
! 9100 !  DARE RPC Service  !
+------+--------------------+
! 9400 !  Cluster Service   !
+------+--------------------+
! 9500 !   STOMP Service    !
+------+--------------------+
! 9600 !  DARE JMS Service  !
+------+--------------------+
! 9900 !  JMS JMX Service   !
+------+--------------------+
! 9950 ! JMX Remote Service !
+------+--------------------+
  • No labels