Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

This document provides client application developers the background needed to subscribe to YOUnite MDM notification topics and event types so they can receive real-time updates to MDM events.  A topic is created for each MDM zone and for each MDM zone there are various notification types.



Note: Currently we are using simple username/password authentication between the YOUnite UI and AMQ. All interaction between zones and clients that are tied to zones (e.g. YOUnite UI) should interact with AMQ with OAuth tokens or even better SSO→OAuth.  See OMDM-103.



Subscribing to Topics

MDM uses the Apache ActiveMQ messaging system which leverages the STOMP text-based messaging protocol.  STOMP allows clients to be written easily.  A STOMP protocol implementation in node.js can be found here.

Adding STOMP

npm install --save stomp-client

Configuring STOMP


Note: Hari had inserted the STOMP libraries into the project but is now using the npm command above. There may be some changes to the following



tools/config.ts

Injecting STOMP Libraries

You can directly add to the library section of your source code e.g.:

{src: `${this.ASSETS_SRC}/vendor-libs/js/amq_jquery_adapter.js`, inject: true, vendor: true},
{src: `${this.ASSETS_SRC}/vendor-libs/js/amq.js`, inject: true, vendor: true},
{src: `${this.ASSETS_SRC}/vendor-libs/js/stomp.js`, inject: true, vendor: true},

Subscribing to a Topic


subscribeNotification() {
	this.loggedInZoneUuid = localStorage.getItem('zoneUuid');
	this.client = Stomp.client(Config.ACTIVEMQ_CLIENT);
	let topicUrl = '/topic/' + this.loggedInZoneUuid;
	let connectHeaders = {
		login: Config.ACTIVEMQ_USER_NAME,
		passcode: Config.ACTIVEMQ_PASSWORD,
		'client-id': this.loggedInZoneUuid
	};
	let componentRef = this;
	let callback = function (message) {
		// called when the client receives a STOMP message from the server
		componentRef.toastr.info(message.body);
		componentRef.incrementUnreadNotificationCount();
	};
	let subscribeHeaders = {'activemq.subscriptionName': this.loggedInZoneUuid};
	this.client.connect(connectHeaders, function () {
		componentRef.client.subscribe(topicUrl, callback, subscribeHeaders);
	}
);



Notification Types

The following is list of event types that a subscriber can be notified of on a per zone (topic) basis.  Each time an event is triggered it publishes a new notification of a given event type  .  

EventEvent TypeDefault Scope
A zone is createdZONE_POSTALL
A zone is updatedZONE_PUTALL
A zone is deletedZONE_DELETEALL
A zone's thumbnail image is updatedZONE_THUMBNAIL_PUTALL

A data domain is created or a new version of

of the data domain has been created

DOMAIN_POSTALL

A data domain has been created

DOMAIN_PUTALL
A data domain has been deletedDOMAIN_DELETEALL
An MDR has been created for a given data domain (TBD)DOMAIN_NAME_DATA_POSTALL
An MDR has been updated in a given data domain (TBD)DOMAIN_NAME_DATA_PUTALL
An MDR has been deleted in a give data domain (TBD)DOMAIN_NAME_DATA_DELETEALL

Payload

The payload for an event includes:

keyvalue
uuidZone uuid of target resource
nameZone display name of target resource
descriptionDescription of event
dateTimestamp of when event occurred (TBD)
optionalOther key/values that are appropriate for the event type


Requesting Notification Log

A client can make a request to get the log history for all notifications sent to their zone.  The user provides their zone and a from and to date.



  • No labels