Skip to content

Commit 4290a02

Browse files
committed
ADO-313: Added message queue to process server capi events
1 parent 8c2cc7e commit 4290a02

File tree

5 files changed

+72
-0
lines changed

5 files changed

+72
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Meta\Conversion\Model;
5+
6+
use Magento\Framework\Serialize\Serializer\Json as JsonSerializer;
7+
use Meta\BusinessExtension\Helper\FBEHelper;
8+
use Meta\Conversion\Helper\ServerEventFactory;
9+
use Meta\Conversion\Helper\ServerSideHelper;
10+
11+
class CapiEventHandler
12+
{
13+
14+
/**
15+
* @param ServerSideHelper $serverSideHelper
16+
* @param FBEHelper $fbeHelper
17+
* @param ServerEventFactory $serverEventFactory
18+
* @param JsonSerializer $jsonSerializer
19+
*/
20+
public function __construct(
21+
private readonly ServerSideHelper $serverSideHelper,
22+
private readonly FBEHelper $fbeHelper,
23+
private readonly ServerEventFactory $serverEventFactory,
24+
private readonly JsonSerializer $jsonSerializer
25+
) { }
26+
27+
public function process(string $message): void
28+
{
29+
try {
30+
$payload = $this->jsonSerializer->unserialize($message);
31+
$eventId = $payload['event_id'];
32+
$eventType = $payload['event_type'];
33+
// remove values from array
34+
unset($payload['event_id']);
35+
unset($payload['event_type']);
36+
37+
// Add source and pluginVersion in the payload as custom properties
38+
$payload['custom_properties'] = [];
39+
$payload['custom_properties']['source'] = $this->fbeHelper->getSource();
40+
$payload['custom_properties']['pluginVersion'] = $this->fbeHelper->getPluginVersion();
41+
42+
$event = $this->serverEventFactory->createEvent($eventType, array_filter($payload), $eventId);
43+
if (isset($payload['userDataFromOrder'])) {
44+
$this->serverSideHelper->sendEvent($event, $payload['userDataFromOrder']);
45+
} else {
46+
$this->serverSideHelper->sendEvent($event);
47+
}
48+
} catch (\Exception $e) {
49+
$this->fbeHelper->logException($e);
50+
}
51+
}
52+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Communication/etc/communication.xsd">
3+
<topic name="send.conversion.event.to.meta" request="string" />
4+
</config>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/consumer.xsd">
3+
<consumer name="send.conversion.event.to.meta.consumer" queue="send_conversion_event_to_meta" connection="db" handler="Meta\Conversion\Model\CapiEventHandler::process" consumerInstance="Magento\Framework\MessageQueue\Consumer"/>
4+
</config>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/publisher.xsd">
3+
<publisher topic="send.conversion.event.to.meta">
4+
<connection name="db" exchange="send-conversion-event-to-meta-exchange" disabled="false"/>
5+
</publisher>
6+
</config>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework-message-queue:etc/topology.xsd">
3+
<exchange name="send-conversion-event-to-meta-exchange" type="topic" connection="db">
4+
<binding id="SendConversionEventToMeta" topic="send.conversion.event.to.meta" destinationType="queue" destination="send_conversion_event_to_meta"/>
5+
</exchange>
6+
</config>

0 commit comments

Comments
 (0)