Skip to content

Commit 0c48772

Browse files
committed
changed to a batched platform message
1 parent 103f92e commit 0c48772

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

src/server/pub_sub/salesforce_message_publisher.py

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import json
12
import time
23
import jwt
34
import os
@@ -20,7 +21,8 @@
2021
TENANT_ID = os.getenv("TENANT_ID")
2122
PLATFORM_MESSAGE_AUTHOR = os.getenv("PLATFORM_MESSAGE_AUTHOR_RECORD_ID")
2223

23-
UPDATE_TOPIC = "/event/Updated_Contacts_From_Pipeline__e"
24+
UPDATE_TOPIC = "/event/updated_contacts_batched__e"
25+
BATCH_SIZE = 200
2426

2527

2628
def send_pipeline_update_messages(contacts_list):
@@ -57,19 +59,35 @@ def send_pipeline_update_messages(contacts_list):
5759
schema_id = stub.GetTopic(pb2.TopicRequest(topic_name=UPDATE_TOPIC), metadata=auth_meta_data).schema_id
5860
schema = stub.GetSchema(pb2.SchemaRequest(schema_id=schema_id), metadata=auth_meta_data).schema_json
5961

60-
for contact_dict in contacts_list:
61-
contact_dict['CreatedDate'] = int(datetime.now().timestamp())
62-
contact_dict['CreatedById'] = PLATFORM_MESSAGE_AUTHOR
62+
payloads = []
63+
while len(contacts_list) > 0:
64+
if len(contacts_list) > BATCH_SIZE:
65+
current_batch = contacts_list[:BATCH_SIZE]
66+
del contacts_list[:BATCH_SIZE]
67+
else:
68+
current_batch = contacts_list
69+
contacts_list = []
6370

71+
root_object = {
72+
"updatedContactsJson" : current_batch
73+
}
74+
75+
message = {
76+
"CreatedById": "0052g000003G926AAC",
77+
"CreatedDate": int(datetime.now().timestamp()),
78+
"updated_contacts_json__c": json.dumps(root_object)
79+
}
6480
buf = io.BytesIO()
6581
encoder = avro.io.BinaryEncoder(buf)
6682
writer = avro.io.DatumWriter(avro.schema.parse(schema))
67-
writer.write(contact_dict, encoder)
83+
writer.write(message, encoder)
6884
payload = {
6985
"schema_id": schema_id,
7086
"payload": buf.getvalue()
7187
}
72-
stub.Publish(pb2.PublishRequest(topic_name=UPDATE_TOPIC, events=[payload]), metadata=auth_meta_data)
73-
logger.info('Pipeline update message sent')
88+
payloads.append(payload)
89+
90+
stub.Publish(pb2.PublishRequest(topic_name=UPDATE_TOPIC, events=payloads), metadata=auth_meta_data)
91+
92+
logger.info("%s total pipeline update messages sent", len(payloads))
7493

75-
logger.info("%s total pipeline update messages sent", len(contacts_list))

0 commit comments

Comments
 (0)