Protocol and Connection
Since there is no signal mechanism for client application that Sabre Red 360 is ready for handling Native API requests, it is advised to wait until SR360 is fully loaded. When that happens the client application should be started and it should try to connect to the Message Broker.
Default Broker URL: tcp://localhost:61616
Host and port can be remotely configured by Sabre Admin.
The connection might be refused which usually means that the Message Broker is not ready yet. In that case it is advised to retry connecting a few times.
If the client application cannot connect to the Message Broker even after SR360 has been fully loaded it might mean that:
SR360 account has not been assigned a Red App that is required to start Native API (Sabre ID configuration change needed).
Native API Message Broker is running in Remote Mode and remote broker (like Apache ActiveMQ) has not been started.
Something blocks connection between the client application and the Message Broker.
Queues in ActiveMQ are used to store and retrieve messages. Per Native API Red App there are two queues, one is used by the client application to send messages to SR360, and the other one to receive reponses from SR360.
Request queue name has the following format: <RedAppID> + "_" + <USERDOMAIN> + "\" + <USERNAME> + "_request"
Response queue name has the following format: <RedAppID> + "_" + <USERDOMAIN> + "\" + <USERNAME> + "_response"
USERDOMAIN is currently logged in windows user’s domain. USERNAME is currently logged in windows user’s username. Both USERDOMAIN and USERNAME exists as windows environment variables.
In Java, you can obtain values from this variables like this:
String userDomain = System.getenv("USERDOMAIN"); String userName = System.getenv("USERNAME");
Queues names examples:
Client javax.jms.Session needs to use Session.AUTO_ACKNOWLEDGE mode.
Communication between Sabre Red 360 and your application is based on XML messages. For detailed information check Messages List section.
Complete example of how to create a JMS client see "Client side" section here:
For more information about ActiveMQ refer to official documentation on: http://activemq.apache.org/
It is also highly recommended to set time to live property on the MessageProducer that will be used to send messages. It can be done like this:
MessageProducer producer = session.createProducer(destinations); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); producer.setTimeToLive(TimeUnit.SECONDS.toMillis(5));
Apache ActiveMQ documentation: Apache ActiveMQ