Date: Thu, 28 Mar 2024 12:54:43 +0000 (UTC)
Message-ID: <1923355058.24509.1711630483224@ae5f4610bf64>
Subject: Exported From Confluence
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_Part_24508_400520940.1711630483223"
------=_Part_24508_400520940.1711630483223
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Location: file:///C:/exported.html
Oneway and datagram invocations are normally =
sent as individual messages, that is, the Ice run time sends the oneway or =
datagram invocation to the server immediately, as soon as the client makes =
the call. If a client sends a number of oneway or datagram invocations in s=
uccession, the client-side run time traps into the OS kernel for each messa=
ge, which is expensive. In addition, each message is sent with its own message header, that is, for N messages, the bandwidth for N message headers i=
s consumed. In situations where a client sends a number of oneway or datagr=
am invocations, the additional overhead can be considerable.
To avoid the overhead of sending many small messages, you can send onewa=
y and datagram invocations in a batch: instead of being sent as a separate =
message, a batch invocation is placed into a client-side buffer by the Ice =
run time. Successive batch invocations are added to the buffer and accumula=
ted on the client side until they are flushed, either explicitly by the cli=
ent or automatically by the Ice run time.
On this page:
Proxy Metho=
ds for Batched Invocations
Several proxy methods suppo=
rt the use of batched invocations. In Slice, these methods would look as fo=
llows:
Object* ice_batchOneway();
Object* ice_batchDatagram();
void ice_flushBatchRequests();
The ice_batchOneway
and ice_batchDatagram
meth=
ods create a new proxy configured for batch invocations. Once you obtain a =
batch proxy, messages sent via that proxy are buffered in the client-side r=
un time instead of being sent immediately. Once the client has invoked one =
or more operations on a batch proxy, it can call ice_flushBatchReques=
ts
to explicitly flush the batched invocations. This causes the batc=
hed messages to be sent "in bulk", preceded by a single message header. On =
the server side, batched messages are dispatched by a single thread, in the=
order in which they were written into the batch. This means that messages =
from a single batch cannot appear to be reordered in the server. Moreover, =
either all messages in a batch are delivered or none of them. (This is true=
even for batched datagrams.)
Asynchronous versions of ice_flushBatchRequests
are also av=
ailable; see the relevant language mapping for more information.
Autom=
atically Flushing Batched Invocations
The default behavior of the Ice run time, as governed by the configurati=
on property Ice.BatchAutoFlush
,=
automatically flushes batched invocations as soon as a batched request cau=
ses the accumulated message to exceed the maximum allowable size. When this=
occurs, the Ice run time immediately flushes the existing batch of request=
s and begins a new batch with this latest request as its first element.
For batched oneway invocations, the maximum message size is established =
by the property Ice.MessageSizeMax
<=
/a>, which defaults to 1MB. In the case of batched datagram invocations, th=
e maximum message size is the smaller of the system's maximum size for data=
gram packets and the value of Ice.MessageSizeMax
.
A client that sends batch requests cannot determine the size of the mess=
age that the Ice run time is accumulating for it; automatic flushing is ena=
bled by default as a convenience for clients that unknowingly exceed the ma=
ximum message size. A client that requires more deterministic behavior shou=
ld flush batched requests explicitly at regular intervals.
Flushing Batched Invocations for Communicators and Connections<=
/h1>
The Communicator
=
a> and Connection
=
interfaces support synchronous and asynchronous versions of flus=
hBatchRequests
. As you might expect, the Connection::flushBatc=
hRequests
operation flushes all batch requests queued for a particul=
ar connection, and the Communicator::flushBatchRequests
operat=
ion flushes the batch requests of every connection created by a communicato=
r.
The synchronous versions of flushBatchRequests
block the ca=
lling thread until the batch requests have been successfully written to the=
local transport. To avoid the risk of blocking, you must use the asynchron=
ous versions instead (assuming they are supported by your chosen language m=
apping). Note also that the asynchronous version of Communicator::flu=
shBatchRequests
never raises an exception, even if an error occurs w=
hile flushing one of its connections.
Considerati=
ons for Batched Datagrams
For batched datagram invocations, you need to keep in mind that, if the =
data for the invocations in a batch substantially exceeds the PDU size of t=
he network, it becomes increasingly likely for an individual UDP packet to =
get lost due to fragmentation. In turn, loss of even a single packet causes=
the entire batch to be lost. For this reason, batched datagram invocations=
are most suitable for simple interfaces with a number of operations that e=
ach set an attribute of the target object (or interfaces with similar seman=
tics). Batched oneway invocations do not suffer from this risk because they=
are sent over stream-oriented transports, so individual packets cannot be =
lost.
Compressing Bat=
ched Invocations
Batched invocations are more efficient if you also enable compression for the transport: many i=
solated and small messages are unlikely to compress well, whereas batched m=
essages are likely to provide better compression because the compression al=
gorithm has more data to work with.
Active Connection Management and Batched Invocations
As for oneway invocations<=
/a>, you should disable server-side Active Connection Management (ACM) when using batched =
invocations over TCP/IP or SSL. With server-side ACM enabled, it is possibl=
e for a server to close the connection at the wrong moment and not process =
a batch (with no indication being returned to the client that the batch was=
lost).
See Also
------=_Part_24508_400520940.1711630483223
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: file:///C:/42d1c41851731792bf0b017d55153c75
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
AAAASUVORK5CYII=
------=_Part_24508_400520940.1711630483223
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: file:///C:/636ffb57184d35b4dd4630b7850f79ec
iVBORw0KGgoAAAANSUhEUgAAAEQAAAAoCAIAAADIR8vEAAAACXBIWXMAAAsTAAALEwEAmpwYAAAK
T2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AU
kSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXX
Pues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgAB
eNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAt
AGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3
AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dX
Lh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+
5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk
5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd
0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA
4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzA
BhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/ph
CJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5
h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+
Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM
WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQ
AkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+Io
UspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdp
r+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZ
D5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61Mb
U2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY
/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllir
SKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79u
p+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6Vh
lWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1
mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lO
k06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7Ry
FDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3I
veRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+B
Z7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/
0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p
DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5q
PNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIs
OpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5
hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQ
rAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9
rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1d
T1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aX
Dm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7
vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3S
PVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKa
RptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO
32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21
e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfV
P1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i
/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8
IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq
YAAAOpgAABdvkl/FRgAABDtJREFUeNrcmU1s21QcwP9xPeJiwG6rJWmFUqcjk4IwtaVpUGnSkgOH
8CHiY7WhfKAxwYWWA4cdWMcBcUsrwTjRJEhll4l0cKiQkJxIkzLtEm9BZGqrOatQvrRSGxrqTG7L
4UWRx9oNsbiJ+z9ZT3+/59977/9p2+7uLgAAQEnRzv+4mpHVB9utkR6XwX783AnXl28w7REbglm4
XY/8sKLvWAPDKEfJIzfPjzM00YJZuF0/e3UZLCt2HKt+epImcEzR9PcXV8HK0tR33ln4DQCwb25W
mvoOWFyu3/uzpGjYd1Ld7JUivDM96TN7lcXiH9id+1umrjETcCcEL92Pmw3z8+qGiWvQBB4PjkV4
x8HctOrmA9w8EjHGci7yIC3HFBjORYoxliZwI5vfQ+2prGzpUrXRozAR3hkPeowkLbwou6d+pqQG
5gu9CDMTcF8MuLvloHGLmruJMF0x90cF68gsDG1naHvX84DOwEjVBn9Z6pRT6jIMKocC84XF4vph
gAEARdOFK8XZXNny3qwt00t3b1UbCcH78Lk1U/naPkfa7OkMIJmvSZVNYxJQUrQZcc1K16zrLgEz
b+qDdwmYqbMfsEvAD2CN6aW7qHti7ZMxXrnDA3MYbKbngqaxRFE0fXpJTu4T/h4vu5+fuiSumRpt
/qsDCCQKABDmnAnBm5HV/2EDgUShtNHsiWuWkdWMrKakGgAwA/YI7xRjbDw4JsZYVCqLMVaMsRHe
CQDtcfScEI4DwMWAG7UBaAKfCbjFGJue9KER1DNA5RCaCqklhONGtY7B+D2U30OFOScASJUGQ9v9
DMUNk6l8PcI7E4JXqjSkSiMheEO+oVvVhp+hOBdJE/jUxIii6QDgZyhU84gx9uOJkaysAoAYZUO+
Ibof9zMU6q2hmQEgIXhDvsGsrDIDRHrS96+mwlNdM9SOUDQ9ml5BHwcAwvdFRdPRRnLDJFIIc45o
egVRoXRmzhA0ORfJuUjhShFlBvmP+DDnmLtR3ivgbqOHuVy5vWJnYGyfXd8zwLczX7TTWVktKU1F
05P5+ru+oVGakKoNo4Gh7W+/qGj6fs3OaHo5W3KeZqgw76SJPv6y9ESkDrjmrKwytL2kNKVq47SH
ook+ALh2Z51zkSHf4NzDuUxGVhVNjwfH/B5qamLEz1DXiuvKlo68S8g3FOadSHPjwuth3pGSaql8
jSZwZuAJZbnruWfwVxzP/lr/+2lgZnPlUZpABUwyX0/m6wCwWFxXNJ0m8EcTzcB8If7mmBhlFU2/
JK6hzG02V56aGPF7KKmyiUwrml6JB1tqs7lyRlYf/xmvvfi87Yvs2oVf7h2CiCl/cgL78OSwHbd8
HnBq9AWGJjCawL8NvWRpEjuO/XTm5ZYDOPOq4+u3j+GYzYokR8kjNz4YR1HIZvx1/t7V5dzvf21b
5J8zRfSdHXd89dax9sg/AwDTwNUVxy2nJwAAAABJRU5ErkJggg==
------=_Part_24508_400520940.1711630483223--