BATCHSZ alone would let a channel wait forever for enough messages to fill a batch on a quiet route—the last urgent message would sit behind an unfilled batch count. BATCHINT fixes that by starting a timer: when the interval in milliseconds expires, the channel sends whatever messages it has collected, even if the batch is smaller than BATCHSZ. Together, BATCHSZ and BATCHINT define the throughput-versus-latency curve for message channels. This tutorial explains BATCHINT in detail, how partial batches behave under load, how to ALTER channel definitions safely, and how to interpret symptoms when BATCHINT is zero or extremely high on production links.
Imagine BATCHSZ(50) and BATCHINT(200). Under heavy load, the agent fills fifty messages quickly and sends—BATCHINT rarely matters. Under light load, three messages arrive and nothing else for 200 ms; the timer fires and those three leave. Under bursty load, you see a mix: full batches during peaks, timer-driven partial batches during valleys. Tuning is finding the compromise your business accepts between wire efficiency and maximum wait time per message.
| BATCHINT | BATCHSZ | Typical behavior |
|---|---|---|
| 50 | 10 | Low latency; small batches |
| 500 | 100 | Balanced WAN default starting point |
| 5000 | 500 | Bulk; last msg may wait seconds |
12345678DEFINE CHANNEL('BULK.TO.HUB') CHLTYPE(SDR) TRPTYPE(TCP) + CONNAME('hub.corp(1414)') XMITQ('XMIT.HUB') + BATCHSZ(200) BATCHINT(1000) DEFINE CHANNEL('REALTIME.TO.HUB') CHLTYPE(SDR) TRPTYPE(TCP) + CONNAME('hub.corp(1414)') XMITQ('XMIT.RT') + BATCHSZ(20) BATCHINT(50) ALTER CHANNEL('BULK.TO.HUB') CHLTYPE(SDR) BATCHINT(500) DISPLAY CHANNEL('BULK.TO.HUB') BATCHSZ BATCHINT
REALTIME route flushes within about 50 ms if the batch is not full—good for interactive traffic. BULK route waits up to about one second to gather up to 200 messages—good for overnight files. Alter one route at a time; document before/after in change records. Receiver and cluster channel definitions should carry compatible values.
Workers fill a box up to fifty items (BATCHSZ). If the egg timer rings (BATCHINT) and the box still has only three items, they tape the box shut and ship it anyway so item number three is not waiting for forty-seven more that might not come today.
Application teams track p95 and p99 latency. Raising BATCHINT raises the worst-case wait for the last message in a partial batch. If p99 must stay under 200 ms end-to-end, BATCHINT near 5000 on the channel segment alone may violate SLA before application logic runs. Measure with realistic message sizes and persistence—non-persistent test traffic misleads tuning decisions.
DISPLAY CHSTATUS MSGS and BYTS over intervals during low traffic. If MSGS increments in single-message steps, BATCHINT may be dominating. During peaks, MSGS may jump in larger steps aligned with BATCHSZ. Compare channels with identical message rates but different BATCHINT to prove timer impact in test.
BATCHINT is the egg timer that says ship the box now even if it is not full yet.
BATCHSZ 50, BATCHINT 100, steady 10 msg/s. Estimate typical batch sizes.
Business needs sub-100 ms channel wait. Suggest BATCHSZ and BATCHINT starting points.
Why is BATCHINT in milliseconds while HBINT is in seconds?
1. BATCHINT is measured in:
2. When BATCHINT expires with a partial batch:
3. BATCHINT pairs with:
4. Lower BATCHINT usually: