Managing queue memory parameters
Adjustment of the parameters is not expected for most common deployment scenarios.
Each document flow element in ION has one or more queues that are linked. ION uses these internal queues to decouple processing steps and simultaneously provide guaranteed delivery. For storage the queues use the Infor_<farmname>_ION database, where each queue has its own set of tables.
When processing a BOD by a queue:
-  A particular queue receives
		  a BOD it keeps the BOD in memory and for persistent reasons stores it in the
		  database. The available memory is defined by the 
		  
queue.memory.limitparameter, by default 64Mb. If that memory is full the queue cannot keep all BODs in memory. - A queue is requested to provide a BOD to the reading process. The BOD is taken from memory and if not available, read from the database. When, the message is processed the BOD will be removed from the database or memory.
 
The Queue node is managing the queues. For performance reasons the Queue node keeps the BODs to process in memory to avoid reading messages (BODs) from the database.
Reading messages from the database affects the performance. For regular processing we recommend that you prevent this. Only for bulk processing, such as initial loads or daily synchronization it is unavoidable.
Apart from the memory queue size the Max Heap Size of the Queue node is adjustable.
Three important parameters that are related to the memory usage of the queues:
- The 
		  
queue.memory.limitas described earlier defines the maximum queue memory available. - The 
		  
broker.memory.usagedefines per broker the maximum available memory. In the case of ION use the formula:broker.memory.usage = queue.memory.limit * 2 - The 
		  
MaxHeapSizeof the QueueNode specifies how much memory all queues together can use. As a rule of thumb you can the formula:Queue Node Max Heap size = queue.memory.limit * # of expected queues * 40% 
The Max HeapSize of the Queue Node can be adjusted through the grid management UI.
For more information, see Modifying the java heap space.
Maintain the 
		queue.memory.limit and 
		broker.memory.usage parameter in the 
		InforIONCBM database, table 
		ION_PROPERTY. 
	 
/****** Update queue,memory.limit parameter  SQL Server ******/
declare @maxmemory int
set @maxmemory = <max queue memory in bytes, default 67108864>
update  [InforIONCBM].[dbo].[ION_PROPERTY]
set C_VALUE = @maxmemory  
where C_PID = 'ion.queues' and C_KEY = 'queue.memory.limit'
update [InforIONCBM].[dbo].[ION_PROPERTY]
set C_VALUE = @maxmemory * 2
where C_PID = 'ion.queues' and C_KEY = 'broker.memory.usage';
		/****** Update queue,memory.limit parameter  Oracle ******/
update  INFORIONCBM.ION_PROPERTY
set C_VALUE = <max queue memory in bytes, default 67108864>
where C_PID = 'ion.queues' and C_KEY = 'queue.memory.limit';
update [InforIONCBM].[dbo].[ION_PROPERTY]
set C_VALUE = <max queue memory in bytes * 2>
where C_PID = 'ion.queues' and C_KEY = 'broker.memory.usage';