Router based on Apache Qpid.

Web console

In the Topology diagram/view:

  • Artemis brokers are rendered uniquely based on the name of the broker as specified in broker.xml. So, if two separate brokers in a mesh have the same name, they will appear as one broker in the diagram, regardless of whether they have different hostnames.

Interconnect 1.7

Router config file (qdrouterd.conf):

  • Configured by providing it in the env var QDROUTERD_CONF
  • Located on the file system at /opt/interconnect/etc/qdrouterd.conf
  • Users: /etc/qpid-dispatch/sasl-users/ and /tmp/qdrouterd.sasldb

Cookbook

Check the auto-mesh query results generated by the startup script

Auto-mesh discovers other routers, either by querying the project/namespace (QUERY), or by deriving the other pods’ IDs in the StatefulSet (INFER), and adds connectors for them to the qdrouterd.conf file. To find what connectors are added by auto-mesh, just tail the conf files:

for pod in $(oc get pods -l application=router | awk 'NR>1 {print $1}'); do oc exec $pod -- tail -n 20 /opt/interconnect/etc/qdrouterd.conf; done

Check router connections

for pod in $(oc get pods -l application=router | awk 'NR>1 {print $1}'); do oc exec $pod --

Troubleshooting

Can’t connect to a router from the AMQ Interconnect console. “There was a connection error: Unable to connect to amq-interconnect-console.example.com:80” is shown on screen, and in the Javascript console logs: “QDR-main: failed to auto-connect to amqc-tdonohue-amq-demo.example.com:80”

  • Note that the web console uses Websockets to connect to the web console port of the router (see “Attempting AMQP over websockets connection using address:port of browser (amqc-tdonohue-amq-demo.example.com:80)” in the console logs)
  • Using public wifi can break this connection, if a dumb proxy is in the middle. Look for Cache-Miss responses in the Javascript console. Use a different connection if possible (e.g. mobile tethering)

Router doesn’t start automesh properly - this is seen in the logs: “Traceback (most recent call last): File “/opt/interconnect/bin/auto_mesh.py”, line 241, in connectors = query() ... File "/opt/interconnect/bin/auto_mesh.py", line 226, in query ... si = ip_list.index(ip) ... ValueError: '10.254.4.107' is not in list .. Error configuring automesh: '10.254.4.107' is not in list"

  • The startup script for AMQ Interconnect uses the Kubernetes API to find other router pods in the namespace. Ensure that the Pod is running under a Service Account which has permissions (view role) to get pods in the namespace.
  • The startup script discovers other router pods by looking for pods which have the label application=your-router-name. Ensure that the pods (or Deployment.spec.template) have that label assigned, or else the script won’t discover itself or other pods.