Data Subscriptions using AMQP
You will need an AMQP 1.0 client that can connect using SSL.
- Only SSL connections are allowed on ports 5671 and 5672.
- amqp.swim.iblsoft.com:5672 – does not verify the client's certificate. However, clients can verify the server's authenticity using the HARICA testing certificate.
- amqp.swim.iblsoft.com:5671 – same as above, but verifies also the client certificates.
- In this case you need to get a client certificate signed by the HARICA root testing certificate.
Please see also Working with Certificates for more details. The connection to 5672 will work even without the HARICA certificate, in which case the server authenticity verification will be bypassed.
![]() |
Note |
Under normal circumstances, the AMQP port 5672 is reserved for unencrypted connections. While the Artemis ActiveMQ broker supports such an unencrypted connection mode, we have chosen to disable it and only allow SSL connections. As explained above, the connection to 5672 requires SSL but does not require client or server certificate verification and can work without either. |
Table of Contents:
AMQP Clients
Python Client Example
A Python example client that connects to amqp.swim.iblsoft.com
is on Github, licensed under Apache License, Version 2.0:
https://github.com/iblsoft/swimdemo
- Uses the
qpid-proton
module to connect to amqp.swim.iblsoft.com:5672 using SSL - It attempts to verify the server's authenticity using the HARICA root testing certificate
- If this fails, then the peer verification will be turned off, but the link is still going to be encrypted using SSL.
- A failure to verify the server can happen, for example, when the HARICA certificate is not known to the operating system on Windows.
- The client subscribes to one of the topics.
- When an IWXXM report is received in the AMQP notification, the script:
- dumps the AMQP message and application properties,
- uncompresses the gzipped payload
- extracts important identification information from the IWXXM (report type, IWXXM version, issue time, observation time, validity period).
IBL Moving Weather (Message/File Switching System)
IBL's Moving Weather can connect to amqp.swim.iblsoft.com
and download the IWXXM reports, so the users who have a license for Moving Weather can set up the data download using a communication channel.
Topics for subscription
Topic | Old name | Description |
---|---|---|
origin.a.wis2.com-ibl.data.core.weather.aviation.metar |
amqp-delivery-queue-metar |
IWXXM METAR and SPECI |
origin.a.wis2.com-ibl.data.core.weather.aviation.taf |
amqp-delivery-queue-taf | IWXXM TAF |
origin.a.wis2.com-ibl.data.core.weather.aviation.sigmet |
amqp-delivery-queue-sigmet | IWXXM SIGMET |
![]() |
Note |
For now, we are following the WIS 2.0 Topic Hierarchy, with slashes replaced with dots because AMQP can not have / (slash) characters in the topic name. Also note that the WIS 2.0 Topic Hierarchy for aviation weather does not include SIGMET as of April 2025, but hopefully, further aviation report types will be added. |
Message Properties
Please see the OASIS AMQP 1.0 Part 3: Messaging (Properties section) for the precise definition of the AMQP Message Properties.
Subject
According to the AMQP specification, the message subject is:
A common field for summary information about the message content and purpose.
Currently, our subject fields look like this:
Subject example | Note |
---|---|
TAF_LOWS_NORMAL_20250401051500 |
Original TAF for Salzburg with iwxxm:issueTime at 05:15Z |
TAF_LOWS_AMENDMENT_20250401064500 |
TAF amendment for Salzburg issued at 06:45Z |
SPECI_LOWS_CORRECTION_20250401064500 |
SPECI correction |
The structure of the subject field is:
- Report type:
METAR
,SPECI
,TAF
,SIGMET
- Location indicator: ICAO code of aerodrome or airspace.
- Report status: Extracted from the
iwxxm:reportStatus
attribute of theiwxxm:METAR/SPECI/TAF/SIGMET
, one of:- NORMAL
- AMENDMENT
- CORRECTION
- Issue time: Issue time from
iwxxm:issueTime
element of the IWXXM report as ISO8601 UTC datetime but with all characters except digits removed.
absolute-expiry-time
We are setting the absolute-expiry-time
property to the current UTC time + the ttl
(time-to-live) field from the AMQP heading.
content-type
The RFC2046 MIME type for the message's application-data section. For IWXXM data this is application/xml
.
content-encoding
We are using a content-encoding
of type gzip (RFC1952) for IWXXM data, because:
- gzip is the most broadly supported compression method in HTTP (according to https://en.wikipedia.org/wiki/HTTP_compression)
- IWXXM compression ratio is around ⅓
address
Includes the original topic of the message distributed such as origin.a.wis2.com-ibl.data.core.weather.aviation.metar
.
This is useful if the user subscribes with a wildcard topic such as #.core.weather.aviation.#.
Application Properties
The AMQP application properties for the standard aviation reports are based on data extraction from the IWXXM data model. The table below explains the relationship between each property and the source element or attribute in the IWXXM report.
The paths to IWXXM elements and attributes follow a simplified XPath 1.0 syntax.
TODO: Boris Burger (sk.ibl) Update application properties to match the current slides for MET3SG
Date and time properties
Property | properties.datetime |
properties.issue-datetime |
---|---|---|
Meaning | Base date & time of observation of product (aka reference time). | Datetime of issue of the report. Used to determine the correct sequence of multiple updates (see “links.ref”) for the same “subject” in the Message Properties. |
METAR |
|
|
TAF |
|
|
SIGMET |
|
Link properties
Property | links.ref |
links.type |
---|---|---|
Meaning | One of "canonical" or "update" . Used to distinguish between the initial report and its further corrections and amendments. |
MIME type of the reports. |
METAR | Based on
|
application/xml |
TAF | Based on
|
application/xml |
SIGMET | iwxxm:SIGMET/@reportStatus should always be "NORMAL" which translates to "canonical". |
application/xml |
Geometric properties - Type and Location
Property | geometry.type |
|
---|---|---|
Meaning | Distinguishes between point-based (e.g. METAR, TAF) and area-based reports (e.g. SIGMET, AIRMET).
|
Identifies Airport/FIR/Center of the message, such as “EBBR" 4-letter ICAO code. |
METAR |
|
Simplified XPath with recursive search: The full path in the XML is:
|
TAF | Point |
Analogous to METAR, but the iwxxm:aerodrome is under iwxxm:TAF . |
SIGMET | Bounding-box |
This will be the FIR/UIR/CTA affected by the SIGMET warning. It is stored in iwxxm:issuingAirTrafficServicesRegion where you need to do a search for aixm:designator. An example XPath (and analogously for
|
Geometric properties - Points and Bounding Boxes
Property |
|
|
---|---|---|
Meaning | The longitude and latitude coordinate components of the location of an airport or a reported event for point-based reports. | To be used with area-based reports: SIGMET, AIRMET, and other FIR/polygonal/area reports. Defines the longitude and latitude range of the bounding-box around the weather area. |
METAR | The coordinates might not be included in IWXXM for NIL METAR, however they should be present for the initial METARs and their corrections. Simplified XPath with recursive search: The full path is:
|
Not applicable. |
TAF | The coordinates might not be included in IWXXM for CNL TAF or NIL TAF, however they should be present for the initial TAFs and regular amendments or corrections. Simplified XPath with recursive search: The full path is:
|
Not applicable. |
SIGMET | Not applicable. | There are 3 types of IWXXM SIGMET warnings:
There is an element
The XPath relative to the parent SIGMET (or TC SIGMET, VA SIGMET) element is Specifically for Specifically for |