Appearance
Meduse Integration
The inspected Meduse–Logidav connector exchanges files over FTP and processes them with scheduled commands. The source snapshot does not establish a Meduse RabbitMQ consumer. It shows several distinct file flows, plus separate application queues described below. Deployment settings and runtime behavior were not checked.
Role
- Product intake: Logidav places new-product JSON files on the Meduse FTP connector; Meduse scans those files and queues product-import jobs.
- Stock and price feeds: Logidav writes CSV exports that Meduse reads from the FTP connector.
- Product export: Meduse writes a product CSV for Logidav. The matching Logidav reader currently exits at
die('stopped'), so source code alone does not prove this flow completes.
See connector folders and file formats, queue details, and scheduled connector jobs.
Command names and paths below describe source behavior. Do not run them against production; production use requires approval for the exact command and target.
Components
| Component | Location | Source-backed role |
|---|---|---|
| Logidav FTP service | src/CoreBundle/Services/MeduseService.php | Connects to the configured Meduse FTP service and reads or writes connector files. |
| Meduse Logidav module | Modules/Logidav/Services/Logidav.php | Uses Laravel Storage's FTP driver for connector folders and scheduled file commands. |
| New-product importer | GenerateSyncJobsForCommand, ProcessNewProduct | Scans pending JSON files, dispatches ProcessNewProduct on the named Laravel queue, then moves files to complete or failed. |
| Meduse SQL queue | MeduseQueue.php | Separate Logidav database queue mapped to mz_meduse_queue; it is not RabbitMQ. |
For a task-oriented walkthrough on the receiving application, see Meduse integration workflows and Mosaikasa catalog enrichment.
Data Flow
The directions below follow the code that writes and reads each FTP path. A configured schedule is source evidence for intended invocation, not proof that a deployed schedule is running.
| Direction | FTP path and format | Reader / outcome in the source |
|---|---|---|
| Logidav → Meduse | meduse/connectors/logidav/new-product/pending/, JSON | Meduse scans the folder, moves files to processing, and pushes ProcessNewProduct to the Laravel queue named process-new-product. The job moves the remote file to complete or failed. (Logidav FTP writer; Meduse scanner; job outcomes) |
| Logidav → Meduse | meduse/connectors/logidav/export-stock/, semicolon-delimited CSV | Logidav exports stock data; Meduse reads and deletes the files while updating its availability-tracking data. (Logidav writer; Meduse reader) |
| Logidav → Meduse | meduse/connectors/logidav/export-price/, semicolon-delimited CSV | Logidav exports price data; Meduse reads and deletes the files while applying price updates. (Logidav writer; Meduse reader) |
| Logidav → Meduse | meduse/connectors/logidav/syncProduct/pending/, CSV | A Meduse-specific Logidav processor can write updates here from mz_meduse_queue; Meduse reads the files and moves them through processing to complete or failed. The normal QueueService::addQueue() path currently forces the Meduse queue option off, so this producer path is not established as active. (processor output; Meduse reader; queue routing switch) |
| Meduse → Logidav | meduse/connectors/logidav/export-logidav/pending/, pipe-delimited CSV | Meduse writes the product export. The matching Logidav reader currently exits at die('stopped'), so source code alone does not prove this flow completes. (Meduse writer; Logidav reader stop) |
Inbound Data
For Meduse, the verified inbound file flows are the new-product JSON, stock CSV, and price CSV listed above. Product updates from Logidav also have a code-defined syncProduct CSV path, but its queue producer is not established as active in this source snapshot.
Outbound Data
Meduse has a scheduled product-export command that writes a pipe-delimited CSV to export-logidav/pending/. The corresponding Logidav consumer is currently stopped in source before it reads the FTP folder. Order-status exchange and any additional stock direction were not traced in the inspected connector code.
Configuration
Logidav's CoreBundle\Services\MeduseService reads the meduse.ftp parameter group. The Meduse module builds an FTP filesystem from its meduse-ftp.ftp configuration. This page records configuration keys only; endpoint values and credentials belong to deployment configuration and are not part of this source audit.
Queue Architecture
Do not treat the FTP folders, Logidav SQL queue rows, RabbitMQ messages, and Meduse Laravel jobs as one queue:
mz_meduse_queueis a Doctrine-backed Logidav table. Themeduse:queue:processorimplementation selects pending rows grouped by model and invokes that model.MeduseQueueServiceis currently a stub, andQueueService::addQueue()contains a temporary hard-coded disable for inserting into this table.mz_queueis the separate general Logidav SQL queue, processed bymenzzo:queue:processor.- General Logidav product processors publish RabbitMQ messages to
logidav.api.product.put.queue. A separate consumer readslogidav.api.product.messages.exchange.queueand updatesmz_queuerows from Magento status messages. (publisher; status consumer, row update and acknowledgement) ProductMeduseDataUpdateProcessorwriteslogidav.api.product.put.queueas a CSVtopicfield on its FTP output. That field is not itself a RabbitMQ publish. (CSV row)- Meduse's new-product importer calls Laravel
Queue::pushwith queue nameprocess-new-product. Its backend is selected withQUEUE_CONNECTION; the source-only audit cannot establish the deployed value.
For the separate queue models and commands, see Queue Model. The Meduse queue details document the Meduse-specific table and job lane.
Error Handling
The inspected file workflows expose file-state outcomes, not a shared RabbitMQ dead-letter/retry policy:
| Workflow | Source-backed behavior |
|---|---|
| New-product import | The job moves the FTP file to complete after processing or failed when it catches an exception. |
syncProduct CSV import | Meduse moves a file to complete when rows succeed, to failed when all rows error, or to complete with row errors written into the CSV when only some rows fail. |
| Stock and price file import | The inspected commands read and delete source files; deployment-level recovery or replay behavior was not established here. |
Queue monitoring, dead-letter routing, automatic retries, and supervisor restart behavior are not described here because these inspected connector paths do not establish those policies.