I am trying to use Apache Qpid Dispatcher as a stand alone router to route messages to a Rabbit MQ broker using AMQP 1.0. The sending of the message is done via a Java application using Apache Qpid JMS.
I have managed to configure up a listener and a connector in qdrouter.conf file so that the connector gets connected to the broker via amqps when I start the Dispatcher. (The broker is at another company and I don’t have direct access to the setup or log files.)
When the Java application has connection to the router it starts to send messages. Here things start to go wrong, the Java application hangs with no log or timeout. There is a log in the dispatcher proxy though saying:
2024-05-29 13:00:22.735228 +0200 ROUTER_CORE (info) [C2][L7] Link attached: dir=in source={nhn_tjenestebuss_connection_bd093b5d-8b30-4a1f-8c60-00ed2c71f126:101:4:1 expire:sess outcomes:@PN_SYMBOL[:"amqp:accepted:list", :"amqp:rejected:list", :"amqp:released:list", :"amqp:modified:list"]} target={/exchange/NHNTESTServiceBus/8093239_async expire:sess caps:@PN_SYMBOL[:queue]}
2024-05-29 13:00:22.735638 +0200 PROTOCOL (trace) [C2]:FRAME: 4 -> @attach(18) [name="qpid-jms:sender:nhn_tjenestebuss_connection_bd093b5d-8b30-4a1f-8c60-00ed2c71f126:101:4:1:/exchange/NHNTESTServiceBus/8093239_async", handle=0x0, role=true, snd-settle-mode=0x2, rcv-settle-mode=0x0, source=@source(40) [address="nhn_tjenestebuss_connection_bd093b5d-8b30-4a1f-8c60-00ed2c71f126:101:4:1", durable=0x0, expiry-policy=:session-end, timeout=0x0, dynamic=false, outcomes=@<symbol>[:"amqp:accepted:list", :"amqp:rejected:list", :"amqp:released:list", :"amqp:modified:list"]], target=@target(41) [address="/exchange/NHNTESTServiceBus/8093239_async", durable=0x0, expiry-policy=:session-end, timeout=0x0, dynamic=false, capabilities=@<symbol>[:queue]], initial-delivery-count=0x0, max-message-size=0x0]
I also did a tcp dump on the communication between the dispatcher and the broker and got a checksum error meaning The checksum reported by the TCP/IP stack is 0xad3f, but it should be 0xdc4c.
The connector and SSL setup looks like this:
connector {
name: helsenorge_connector
host: tb.test.nhn.no
role: route-container
port: 5671
saslMechanisms: PLAIN
saslUsername: Testuser
saslPassword: file:/home/test/.pwd
sslProfile: sslProfile1
}
sslProfile {
name: sslProfile1
certFile: /etc/qpid-dispatch/cert.pem
privateKeyFile: /etc/qpid-dispatch/key.pem
caCertFile: /etc/qpid-dispatch/ca-cert.pem
}
The listener is not using amqps but amqp and is configured like this:
listener {
host: 0.0.0.0
port: 5673
role: normal
#authenticatePeer: yes
idleTimeoutSeconds: 12
saslMechanisms: ANONYMOUS
}
Other config for the dispatcher looks like this:
router {
mode: standalone
}
address {
prefix: myAddress
distribution: closest
}
linkRoute {
prefix: myAddress
connection: helsenorge_connector
direction: in
}
linkRoute {
prefix: myAddress
connection: helsenorge_connector
direction: out
}
log {
module: DEFAULT
enable: trace+
}
When I turn off the dispatcher and send messages directly from the Java application to the broker everything works fine. What have I missed here?
Bedzon is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.