A customer wants to exchange data between his application and our application via ActiveMQ, so we want to create an Interface Specification Document which describes the settings and properties that both applications must use so that they can communicate. We don't know which programming language or API the customer will use; so if the specification is incomplete they might implicitly use settings that we don't expect.
So I'm wondering which settings must be the same on both sides, and which settings can be decided by each application on its own. This is what I have so far:
Must be specified in document:
- connector type (openwire, stomp, ...)
- connector settings (host name where broker runs, TCP port, user name, password)
- message type (TextMessage, BytesMessage...)
- payload details (XML with XSDs, JSON with schema, ...)
- message encoding (UTF-8), for text payload
- use queues, or topics, or durable topics
- queue names
- is any kind of request/response protocol being used
- use single queue for requests and responses (with selectors being used to get correct messages), or use separate queues for requests and responses
- how to transfer correlation ID used for correlating requests and responses
- message expiration
Must not be specified in document:
- ActiveMQ broker version (all versions are compatible, right?)
- message compression (it should be transparent?)
What did I miss? Which things should be stated in such a document to ensure that two applications can communicate via ActiveMQ?