I think this design architecture is a mistake. (Disclaimer: I don't have experience with ActiveMQ).
I would say the best design pattern is to use some middleware solution to monitor ActiveMQ and push messages to Salesforce over the API. It is possible, albeit far more complicated than you would expect, to schedule code to run every five minutes. See this question for some of the challenges and techniques related to scheduling Apex on a tight schedule.
Even then, you are subject to the vagaries of server load and Salesforce's internal balancing systems. You have no guarantee that any form of asynchronous Apex - Scheduled or Queueable, future or Batch - will execute on the specific schedule that you are hoping for, and the performance you observe will vary from time to time. If you are building a system that depends on very regular updates in Salesforce, you're setting yourself up for a lot of support and maintenance challenges as you move forward.
Salesforce is not well suited to this activity. It's much more sustainable to use a general-purpose server or middleware platform to support Salesforce.