Task Status
This page is part of the ongoing SWIM communities of interest discussions. The content is working material. It should not be treated as final as it is still subject to review, comment and change.
Introduction
Service implementations can use the Advanced Message Queuing Protocol (AMQP) v1.0 international standard. This is available at https://www.amqp.org/.
It is discussed in connection with the EUROCONTROL SWIM TI Yellow Profile Specification on the SWIM reference website. See:
- https://reference.swim.aero/technical-infrastructure/guidance-for-pub-sub-push-implementation.html
- https://reference.swim.aero/technical-infrastructure/binding-selection-guidelines.html
The issue of topics has been discussed in the FAQ. See:
Documenting its use
The overall approach
SWIM-SERV-140 Service functions
The functionality name could be somehow harmonised for AMQP services or a general term, because it delivers always data.
"generalDescription": { "functionality": [{ "name": "...", "description": "...", "realWorldEffect": "..." }, { "name": "..", "description": "...", "realWorldEffect": "..." }] }
SWIM-SERV-240 Service interfaces
Name and description could be harmonised e.g. AMQP Notification, AMQP Subscription.
SWIM-SERV-240 already contains a <noun><role> pattern. e.g
- TurbulenceForecastPublisher for https://eur-registry.swim.aero/services/dwd-turbulence-amqp-10
- ArrivalSequenceInformationPublisher for https://eur-registry.swim.aero/services/dsna-arrivalsequencedistribution-service-v11 (not AMQP but shows the same pattern for names).
As far as AMQP is converned, what are the roles?
- Publisher, Queue, Message...
SWIM-SERV-250 SWIM TI Profile and interface bindings
The best practice could be a link to ... specifications to header/content-type information (e.g. AMQP header information to encoding, message-annotation etc.)
"serviceInterface": [{ "serviceInterfaceBinding": { "name": "SWIM_TI_YP_1_1_AMQP_MESSAGING", "description": "..." } }
SWIM-SERV-270 Service operations
A harmonised entry for AMQP delivery. Consider a controlled vocabulary of verbs for names.
SWIM-SERV-270 proposes <verb><noun> e.g. getAlerts; requestTrajectoryAnalysis; publishAirportMETInducedCapacity; setCoordinationAndTransferData; proposeARESDeActivation.
Which verbs are best in the context of AMQP?
SWIM-SERV-280 Service messages
The following example shows how to document the service message.
"serviceInterface": [{ "messages": [{ "name": "AMQP message body", "description": "The AMQP message body contains the OPMET data in IWXXM3.0", "schema": { "url": "https://schemas.wmo.int/iwxxm/3.0.0/" } }], ... }]
Adding the reference
There is no need to mention the use of AMQP as part of SWIM-SERV-120 Service standard reference. It is more concerned with service definitions produced by the various ATM communities.
However, a service standard listed as part of SWIM-SERV-120 may include statements on the use of AMQP. In that case, any deviations from the service standard should be noted.
The following example shows how to document the use of AMQP in the list of references.
"references": { "serviceDocument": [{ "documentType": "PROTOCOL_SPECIFICATION", "title": "Advanced Message Queuing Protocol (AMQP)", "version": "1.0", "description": "The Advanced Message Queuing Protocol (AMQP) is an open internet protocol for business messaging.", "reference": { "url": "https://www.amqp.org/" } } ] }