Para configurar el IEL tenemos 2 archivos:
- iel.cfg:aquí se configura el IEL en sí.
- pin.conf: aquí se configuran los parametrós de conexión a BRM.
[IEL]
...
[CONN_POOL]
...
[CONNECTION_DETAILS]
...
[/CONNECTION_DETAILS]
[/CONN_POOL]
[FILE_MANAGER]
...
[FILE_MAP]
...
[/FILE_MAP]
...
[/FILE_MANAGER]
...
[/IEL]
Hay mas secciones que las escritas arriba. Por ej: EPI_POOL.
En la sección IEL se encuentran los valores de configuración del IEL, tales como:
logfile: indica cual será el archivo de log del IEL.
loglevel: indica el nivel de log. Los valores son los mismos que los que se usan en cualquier pin.conf
logtimefmt: indica el formato de fechas que se enviarán al log.
1: la fecha es mostrada como: ss.SSSSSS (segundos.microsegundos desde 01/01/1970).
2: la fecha es mostrada como: DD/MM/YYYY hh:mm:ss.
3: la fecha es mostrada como: DD/MM/YYYY hh:mm:ss.SSSSSS
lock_file: indica el archivo que se usará para asegurarse de que solo haya una instancia del IEL.
license: indica la licencia para el IEL. Sin una licencia el IEL no correrá.
semaphore_file: indica el archivo que sera monitoreado para modificar el comportamiento del IEL mientras esta ejecutándose.
En la sección CONN_POOL se encuentran los valores de configuración de los pooles de conexión del IEL a BRM. El IEL puede tener más de un pool de conexiones a BRM. Si esta sección no se encuentra entonces el IEL utiliza los valores del pin.conf. Los valores de esta sección son:
size: cantidad de conexiones que serán mantenidas por el pool para procesar opcodes.
name: nombre del pool de conexiones. Éste nombre se usa en otras secciones del IEL.
CONNECTION_DETAILS: subsección donde se especifican los parámetros de conexión del pool:
PIN_FLD_POID: service poid type
PIN_FLD_TYPE: login type
PIN_FLD_LOGIN: login name
PIN_FLD_PASSWD_CLEAR: password
PIN_FLD_CM_PTRS[0].PIN_FLD_CM_PTR:servidor y puerto
En la sección FILE_MANAGER (puede haber más de una) se cofigura el directorio que se estará monitoreando para procesar los archivos del mismo, los directorios de procesados, errores, satisfactorios, rechazados, cantidad de threads procesadores de archivos, frecuencia de búsqueda, etc. Algunos de los valores de esta sección son:
name: nombre para identificar al file manager.
load_buffer: especifica el numero de registros para poner en el buffer y procesarlos de una vez. Si se especifica 0 no hay límite.
in_dir: directorio donde el IEL buscará los archivos para procesar.
done_dir: directorio donde se depositan los archivos procesados.
work_dir: directorio donde se depositan los archivos que estan siendo procesados.
reject_dir: directorio donde se depositan los archivos rechazados por no tener una configuracion definida.
success_dir: directorio donde se depositan los archivos procesados satisfactoriamente.
error_dir: directorio donde se depositan los archivos que dieron error.
filter_dir: directorio donde se depositan los archivos que fueron filtrados por procesamiento.
working_prefix: prefijo que se le pone a los archivos que están siendo procesados.
working_sufix: sufijo que se le pone a los archivos que están siendo procesados.
remove_empty_files: indica si se deben guardar (0) o no (1) los archivos vacios.
file_manager_threads: cantidad de threads que procesarán archivos.
file_queue_size: cantidad de archivos que el IEL puede manejar en cualquier momento.
rater_threads: define el numero de threads independientes que se utilizaran para manejar archivos.
rate_queue_size: máximo número de registros que pueden ser puestos en buffer entre los threads del file-manager y los threads de rating.
search_frequency: cantidad de segundos en las que se realizará cada búsqueda.
group_files:
multiple_account_transactions:
group_by_account: los registros de la misma cuenta son procesados por el mismo thread(1). Primero se procesan los registros de las cuentas mas grandes, las que tienen mayor cantidad de registros (2). No hay agrupamiento por threads(0).
group_tail_percentage:
slurp_files: los archivos serán leídos en memoria en un solo jalón antes que ser procesados registro por registro.
log_queue_status:
timers: se tomarán tiempos de performance para cada archivo procesado (1).
manage_batch_gel: group_output_max_files: group_output_prefix: group_output_suffix: FILE_MAP: subsección dentro del FILE_MANAGER, puede haber más de una. Especifica como cada archivo debe ser procesado por el IEL:
name: nombre del FILE_MAP
include: archivo de configuración
match_expr: expresión para hacer match con los archivos que procesará este FILE_MAP
conn_pool: nombre del pool de conexiones que se utilizará (definido en la sección CONN_POOL)
manage_batch_gel:
sort_by_time:
El IEL se puede ejecutar en 2 modos: como un demonio o como un proceso simple.
Modo demonio: se ejecuta el iel sin parámetros. Recodar lanzarlo con nohup y en background.
Modo simple: en la línea de comandos se le pasan como parámetros: -f el nombre del file-manager que queremos que procese los archivos y los archivos que serán procesados por ese file-manager. Ejemplo: iel -f MiFileManager archivo1.txt archivo2.txt
Si se pasa el parámetro -t se ejecutará en modo test y a todas las transacciones se les hará rollback.
Con lo escrito arriba ya se puede configurar el IEL para que se conecte a BRM y procese archivos con un filename pattern específico. Ahora nos falta configurar cómo se procesarán los archivos (FILE_MAP.include) pero eso lo veremos en un otro post con un ejemplo.
Aquí dejo la configuración de una archivo iel.cfg como ejemplo.
[IEL] logfile=iel.log loglevel=3 logtimefmt=2 lock_file=iel.pid license=tu_licencia semaphore_file=semaphore.txt #------------------------------------ # Conexion #------------------------------------ [CONN_POOL] name=MI_CONEXION size=1 [CONNECTION_DETAILS] PIN_FLD_POID=fixed|0.0.0.1 /service/pcm_client 1 PIN_FLD_TYPE=fixed|1 PIN_FLD_LOGIN=fixed|root.0.0.0.1 PIN_FLD_PASSWD_CLEAR=fixed|password PIN_FLD_CM_PTRS[0].PIN_FLD_CM_PTR=fixed|ip server_ip puerto [/CONNECTION_DETAILS] [/CONN_POOL] #------------------------------------------ # File Manager - Prueba_IEL #------------------------------------------ [FILE_MANAGER] name=Prueba_IEL load_buffer=0 [FILE_MAP] name=CambiarNombres include=cambiar_nombres.cfg match_expr=cuentas_nombres_*\.txt conn_pool=MI_CONEXION manage_batch_gel=1 sort_by_time=0 [/FILE_MAP] #-------------------------- # Directorios #-------------------------- in_dir=in done_dir=done work_dir=working reject_dir=reject success_dir=success error_dir=error filter_dir=filter working_prefix=tmp_ working_suffix=.tmp #------------------------ #Configuracion #---------------------- file_manager_threads=1 file_queue_size=5 rater_threads=1 rate_queue_size=1000 search_frequency=5 group_files=0 multiple_account_transactions=0 group_by_account=0 group_tail_percentage=0.00 slurp_files=0 log_queue_status=0 timers=1 remove_empty_files=0 manage_batch_gel=1 group_output_max_files=0 group_output_prefix=tmp_ group_output_suffix=.tmp [/FILE_MANAGER] [/IEL]
Martín Falconi
Exelente post!! +1000
ResponderBorrarHola Martin! excelente post! una duda, puedo usar match_expr para que valide en cada registro del archivo si existe un string?
ResponderBorrar