;; ;; Licensed to the Apache Software Foundation (ASF) under one ;; or more contributor license agreements. See the NOTICE file ;; distributed with this work for additional information ;; regarding copyright ownership. The ASF licenses this file ;; to you under the Apache License, Version 2.0 (the ;; “License”); you may not use this file except in compliance ;; with the License. You may obtain a copy of the License at ;; ;; http://www.apache.org/licenses/LICENSE-2.0 ;; ;; Unless required by applicable law or agreed to in writing, ;; software distributed under the License is distributed on an ;; “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ;; KIND, either express or implied. See the License for the ;; specific language governing permissions and limitations ;; under the License. ;;

Dispatch AMQP Mapping

Dispatch Router is an AMQP router and as such, it provides extensions, codepoints, and semantics for routing over AMQP. This page documents the details of Dispatch Router's use of AMQP.

Delivery Annotations

The following Delivery Annotation fields are defined by Dispatch Router:

FieldTypeDescription
x-opt-qd.ingressstringThe identity of the ingress router for a message-routed message. The ingress router is the first router encountered by a transiting message. The router will, if this field is present, leave it unaltered. If the field is not present, the router shall insert the field with its own identity.
x-opt-qd.tracelist of stringThe list of routers through which this message-routed message has transited. If this field is not present, the router shall do nothing. If the field is present, the router shall append its own identity to the end of the list.
x-opt-qd.tostringTo-Override for message-routed messages. If this field is present, the address in this field shall be used for routing in lieu of the to field in the message properties. A router may append, remove, or modify this annotation field depending on the policy in place for routing the message.

Source/Target Capabilities

The following Capability values are used in Sources and Targets.

CapabilityDescription
qd.routerThis capability is added to sources and targets that are used for inter-router message exchange.

Addresses and Address Formats

The following AMQP addresses and address patterns are used within Dispatch Router.

Address Patterns

PatternDescription
/_local/<addr>An address that references a locally attached endpoint. Messages using this address pattern shall not be routed over more than one link.
/_topo/<area>/<router>/<addr>An address that references an endpoint attached to a specific router node in the network topology. Messages with addresses that follow this pattern shall be routed along the shortest path to the specified router. Note that addresses of this form are a-priori routable in that the address itself contains enough information to route the message to its destination.
/<addr>A mobile address. An address of this format represents an endpoint or a set of distinct endpoints that are attached to the network in arbitrary locations. It is the responsibility of the router network to determine which router nodes are valid destinations for mobile addresses.

Supported Addresses

AddressDescription
/_local/$managementThe management agent on the attached router/container. This address would be used by an endpoint that is a management client/console/tool wishing to access management data from the attached container.
/_topo/0/Router.E/agentThe management agent at Router.E in area 0. This address would be used by a management client wishing to access management data from a specific container that is reachable within the network.
/_local/qdhelloThe router entity in each of the connected routers. This address is used to communicate with neighbor routers and is exclusively for the HELLO discovery protocol.
/_local/qdrouterThe router entity in each of the connected routers. This address is used by a router to communicate with other routers in the network.
/_topo/0/Router.E/qdxrouterThe router entity at the specifically indicated router. This address form is used by a router to communicate with a specific router that may or may not be a neighbor.

Implementation of the AMQP Management Specification

Qpid Dispatch is manageable remotely via AMQP. It is compliant to a limited degree with the emerging AMQP Management specification. This section provides the details of what is supported and what is not and what is planned and what is not.

The latest working draft of the AMQP Management specification at the release of this software is wd08.

Non-compliance occurs for one of the following reasons:

  • Implementation of an optional feature is not planned
  • Implementation is not complete as of the current time

Compliance Matrix

Operation/FeatureRequirementSupportedRemarks
CREATEShouldNoThere are currently no Manageable Entities for which this is appropriate
READShouldNoNot yet implemented
UPDATEShouldNoThere are currently no Manageable Entities for which this is appropriate
DELETEShouldNoThere are currently no Manageable Entities for which this is appropriate
QUERYShouldNoA non-standard version of this operation is supported that retrieves data from all entities of a type. QUERY support will arrive in Dispatch version 0.3.
GET-TYPESShouldYesThere are no types that implement base types
GET-ATTRIBUTESShouldYes
GET-OPERATIONSShouldYes
GET-MGMT-NODESShouldYesThis operation yields the addresses of all of the router nodes in the known network
REGISTERMayNot PlannedThe router has a specific way to discover peers that does not involve this operation
DEREGISTERMayNot PlannedThe router has a specific way to discover peers that does not involve this operation

Manageable Entities

Type NameDescription
org.apache.qpid.dispatch.allocatorPer-type memory allocation statistics
org.apache.qpid.dispatch.connectionConnections to the router's container
org.apache.qpid.dispatch.containerGeneral state and statistics for the AMQP container
org.apache.qpid.dispatch.container.node_typeDescription of registered node types
org.apache.qpid.dispatch.container.nodeDescription of registered nodes in the container
org.apache.qpid.dispatch.routerGeneral state and statistics for the router node
org.apache.qpid.dispatch.router.linkPer-link state and statistics for links attached to the router node
org.apache.qpid.dispatch.router.nodePer-node state and statistics for remote router nodes in the known network
org.apache.qpid.dispatch.router.addressPer-address state and statistics for addresses known to this router