23.6.11.WS Reliable Messaging

Receiver-Side Schema Objects

Incoming messages table used to keep successfully received messages. An application on receiver side can access it in order to process the messages.

CREATE TABLE SYS_WSRM_IN_MESSAGE_LOG (
  IML_INDENTIFIER varchar,             -- references SYS_WSRM_IN_SEQUENCES.WIS_IDENTIFIER
  IML_MESSAGE_ID int NOT NULL,         -- unique per sequence
  IML_EXPIRE_DATE datetime,            -- when expires
  IML_RECEIVE_DATE timestamp NOT NULL ,
  IML_MESSAGE long varchar NOT NULL,   -- the message itself
  IML_STATE     int,
  primary key (IML_INDENTIFIER, IML_MESSAGE_ID)
)
;

Incoming sequences table; used to keep the successfully established message sequence and policy to be applied to it.

CREATE TABLE SYS_WSRM_IN_SEQUENCES
        (
  WIS_IDENTIFIER varchar, -- sequence identifier
  WIS_VERSION varchar,
  WIS_DELIVERY_ASSURANCE varchar,
  WIS_SEQUENCE_EXPIRATION datetime,
  WIS_INACTIVITY_TIMEOUT integer,
  WIS_RETRANSMISSION_INTERVAL integer,
  WIS_ACKNOWLEDGEMENT_INTERVAL integer,
  primary key (WIS_IDENTIFIER)
)
;

Sender's Schema Objects

Outgoing messages log table is used to keep the outgoing messages, to track their state. It also keeps parameter to the soap request in order to re-send if are not already accepted.

CREATE TABLE SYS_WSRM_OUT_MESSAGE_LOG (
  OML_INDENTIFIER varchar,          -- references SYS_WSRM_OUT_SEQUENCES.WOS_IDENTIFIER
  OML_MESSAGE_ID int NOT NULL,      -- unique per sequence
  OML_EXPIRE_DATE datetime,         -- when expires
  OML_SEND_DATE timestamp NOT NULL, -- when is sent
  OML_MESSAGE long varchar NOT NULL,-- soap call parameters
  OML_STATE int,
  primary key (OML_INDENTIFIER, OML_MESSAGE_ID)
)
;

Outgoing sequences table is used to keep parameters for outgoing message sequences. It's used to persist their state.

CREATE TABLE SYS_WSRM_OUT_SEQUENCES (
  WOS_IDENTIFIER varchar,           -- sequence identifier
  WOS_VERSION varchar,
  WOS_DELIVERY_ASSURANCE varchar,
  WOS_SEQUENCE_EXPIRATION datetime,
  WOS_INACTIVITY_TIMEOUT integer,
  WOS_RETRANSMISSION_INTERVAL integer,
  WOS_ACKNOWLEDGEMENT_INTERVAL integer,
  primary key (WOS_IDENTIFIER)
)
;