If you’re running Aras Innovator in a clustered environment, you’ll quickly discover that keeping cached data consistent across all your nodes is essential. That’s where RabbitMQ comes in — acting as a messaging backbone to broadcast cache invalidation events across your servers.
In this post, I’ll break down what it does, why it matters, and how to set it up in simple steps.
Why RabbitMQ with Aras Innovator?
When Aras runs on multiple servers, each one stores cached data for speed. But if one server updates something (like an ItemType definition), the other servers’ caches become outdated.
Normally, Aras uses SQL Server to handle this synchronization, but in some setups, SQL isn’t available. That’s when RabbitMQ steps in to broadcast cache invalidation events to all nodes.
How Cache Invalidation Works
Here’s the process in action:
sequenceDiagram participant A as Server A participant MQ as RabbitMQ participant B as Server B A->>A: User changes metadata (e.g., ItemType) A->>A: Local cache invalidated A->>MQ: Send cache invalidation message MQ->>B: Deliver message B->>B: Invalidate local cache
In short:
- A change happens on Server A.
- Local cache is cleared.
- RabbitMQ queues an invalidation message.
- All other servers clear their caches too.
Step-by-Step Setup
1. Prepare Your RabbitMQ Server
- Use Windows Server 2019 (dedicated, not an Aras node).
- Size your server based on workload — check RabbitMQ cluster sizing.
2. Install Erlang OTP
- Download Erlang OTP 26.0.2 (64-bit) from erlang.org/downloads.
- Follow the installer instructions.
3. Install RabbitMQ
- Download from rabbitmq.com/install-windows.
- Enable the management console at
http://localhost:15672
. - Create an admin user (don’t use the default guest/guest in production).
4. Configure Aras Innovator
- Open
InnovatorServerConfig.xml
on each Aras node. - Disable the SQL-based broker:
<!-- Cache invalidation_broker_type="DatabaseDependency"/-->
- Add RabbitMQ settings:
<Cache RabbitServiceHost="192.168.1.10" RabbitUser="admin_44" RabbitPassword="mypassword" RabbitExchange="arasExchange_test" RabbitHostPort="5672" invalidation_broker_type="MessageQueueDependency" />
- Restart IIS on all nodes.
5. (Optional) Enable SSL/TLS
Add these attributes to your <Cache>
entry:
RabbitSslEnabled="true"
RabbitSslCertPath="c:\Certificates\client_key.p12"
RabbitSslCertPassphrase="mypassword"
RabbitSslServerName="RABBIT_HOST"
Use port 5671
for TLS.
Architecture Diagram
graph TD A[Server A] -- Change Event --> MQ[RabbitMQ Broker] B[Server B] -- Cache Invalidated --> MQ C[Server C] -- Cache Invalidated --> MQ MQ -- Broadcast Cache Invalidation --> A MQ -- Broadcast Cache Invalidation --> B MQ -- Broadcast Cache Invalidation --> C
Final Notes
- RabbitMQ is optional for Aras but essential in non-SQL clustered setups.
- Keep RabbitMQ on a dedicated machine for stability.
- Use SSL/TLS if security is a concern.
With this setup, your Aras Innovator cluster will always have fresh, synchronized cache — and your users will thank you for it.