q.conf — Persistent, Transactional Message Queue (TMQ) configuration file
<QUEUE_NAME>,svcnm=<SERVICE_NAME>,autoq=<AUTOMATIC_Q>,tries=<TRIES>,waitinit=<INIT_WAIT>,waitretry=<RETRY_WAIT>,waitretrymax=<WAIT_MAX>,mode=<MODE>[,txtout=<TXTOUT>][,errorq=<ERRORQ>][,workers=<NR_WORKERS>][,sync=<SYNC_MODE>]
q.conf defines the message queues for tmqueue. The filename is passed to tmqueue in application -q parameter. This file can be shared between multiple tmqueue servers. It is recommended to define default queue (special name is @). So that during operations if specific queue is not found, then settings are taken from default queue. The queue definitions also might not be complete. If so, then defaults are used for other parameters. It is recommended to define default queue first. So that it can be using for other queue missing parameter defaulting. If using sub-sections in ini-config, the default shall be defined for each subsction.
Whitespace/empty lines are ignored. File may contains comments which are started at the beginning of the line with # symbol.
If for automatic queues number of TRIES attempts are exceeded for the message (due to failed service calls), messages are deleted from queue space. If errorq setting is configured for queue, request message is enqueued to this queue, prior deleting it from forward queue.
When messages are forwarded by autoq=y or autoq=T setting, the transaction timeout and related XATMI time-outs are set by following principles:
Sample configuration:
# # @(#) EnduroX Persistent Queue Configuration # @,svcnm=-,autoq=n,waitinit=0,waitretry=0,waitretrymax=0,memonly=n,mode=fifo # This will take other settings from default: TESTA,svcnm=-,autoq=n,waitinit=5 # Automatic queue: Will try to send messages to TESTSVC LTESTB,svcnm=TESTSVC,autoq=y,waitinit=1,waitretry=1,waitretrymax=0,memonly=n,mode=lifo
When using common-configuration then above sample is moved to ini files. The sample section would look like: (e.g. /app/dir/conf/endurox.ini)
# # @(#) Enduro/X Persistent Queue Configuration # [@queue] @=svcnm=-,autoq=n,waitinit=0,waitretry=0,waitretrymax=0,memonly=n,mode=fifo # This will take other settings from default: TESTA=svcnm=-,autoq=n,waitinit=5 # Automatic queue: Will try to send messages to TESTSVC LTESTB=svcnm=TESTSVC,autoq=y,waitinit=1,waitretry=1,waitretrymax=0,memonly=n,mode=lifo
For common configuration sub-sections can be used by cctag, for example if you have following in your ndrxconfig.xml:
<server name="tmqueue"> <max>1</max> <srvid>1660</srvid> <cctag>qs1</cctag> <sysopt>-e /tmp/QS1.log -r -- -m QS1 -s1</sysopt> </server> <server name="tmqueue"> <max>1</max> <srvid>1670</srvid> <cctag>qs2</cctag> <sysopt>-e /tmp/QS2.log -r -- -m QS2 -s1</sysopt> </server>
Then queues can be defined in sub-section per server cctag, for example:
# #Q defaults (common) # [@queue] @=svcnm=-,autoq=n,waitinit=0,waitretry=0,waitretrymax=0,memonly=n,mode=fifo # # manual queue, overridden to lifo # [@queue/qs1] queue1=mode=lifo # # Automatic queue # [@queue/qs2] queue2=svcnm=TESTSV,autoq=y,tries=3,waitinit=1,waitretry=5,waitretrymax=10
xadmin(8), ndrxd(8), ndrxconfig.xml(5) common_configuration(guides) tpenqueue(3) tpdequeue(3)