diff --git a/docker/activemq/conf/activemq.xml b/docker/activemq/conf/activemq.xml index 7afa1e028d80d20133ea3e3ccb43df275e3508b5..dce6591d4a2c02f6b53cc9c0cb7ee055da4a74c7 100644 --- a/docker/activemq/conf/activemq.xml +++ b/docker/activemq/conf/activemq.xml @@ -91,6 +91,14 @@ maximumRedeliveryDelay="-1" useExponentialBackOff="true" /> + <redeliveryPolicy + queue="np.mattermost" + maximumRedeliveries="6" + initialRedeliveryDelay="10000" + backOffMultiplier="3" + maximumRedeliveryDelay="-1" + useExponentialBackOff="true" + /> </redeliveryPolicyEntries> </redeliveryPolicyMap> </redeliveryPolicyMap> @@ -152,6 +160,11 @@ <individualDeadLetterStrategy queuePrefix="" queueSuffix=".dlq" useQueueForQueueMessages="true"/> </deadLetterStrategy> </policyEntry> + <policyEntry queue="np.mattermost"> + <deadLetterStrategy> + <individualDeadLetterStrategy queuePrefix="" queueSuffix=".dlq" useQueueForQueueMessages="true"/> + </deadLetterStrategy> + </policyEntry> </policyEntries> </policyMap> </destinationPolicy> diff --git a/notifications_routing/preferences.py b/notifications_routing/preferences.py index 009a969a38087460f7f6e15b64d7e0caf77d79b1..64dd9c41ae5520b90521f043fdc857c8f1af51e7 100644 --- a/notifications_routing/preferences.py +++ b/notifications_routing/preferences.py @@ -121,15 +121,14 @@ def apply_user_preferences( continue if preference.method == "LIVE": - email = user[data_source.EMAIL] for device in preference.devices: - send_to_device(publisher, message, email, device) + send_to_device(publisher, message, device) continue logging.error("Invalid delivery method: %s", preference.method) -def send_to_device(publisher: megabus.Publisher, message: Dict, email: str, device): +def send_to_device(publisher: megabus.Publisher, message: Dict, device): """Specific implementation of send to device. :param publisher: Publisher object used to publish messages @@ -139,7 +138,7 @@ def send_to_device(publisher: megabus.Publisher, message: Dict, email: str, devi """ logging.debug("Device target: %s", device.name) if device.type == "MAIL": - send_live_email(publisher, message, email) + send_live_email(publisher, message, device.token) return if device.type == "BROWSER": @@ -157,6 +156,9 @@ def send_to_device(publisher: megabus.Publisher, message: Dict, email: str, devi if device.subType == "WINDOWS": send_live_webpush(publisher, message, device.token, encoding="aesgcm") return + if device.subType == "MATTERMOST": + send_live_mattermost(publisher, message, device.token) + return # if device.subType == "LINUX": # send_live_webpush(publisher, message, device.token) @@ -243,3 +245,15 @@ def send_live_safaripush(publisher: Publisher, message: Dict, devicetoken: str): logging.debug("Sending to safaripush:\n\tsummary: %s\n\ttoken: %s", message[OutputMessageKeys.SUMMARY], devicetoken) message = convert_notification_push_to_json_string(message, devicetoken) publisher.send(message, extension="safaripush", ttl=Config.TTL, headers={"persistent": "true"}) + + +def send_live_mattermost(publisher: Publisher, message: Dict, devicetoken: str, **kwargs): + """Send live Mattermost notification. + + :param publisher: Publisher object used to publish messages + :param message: message object + :param devicetoken: mattermost identifier + """ + logging.debug("Sending to Mattermost:\n\tsummary: %s\n\ttoken: %s", message[OutputMessageKeys.SUMMARY], devicetoken) + message = convert_notification_push_to_json_string(message, devicetoken) + publisher.send(message, extension="mattermost", ttl=Config.TTL, headers={"persistent": "true"})