68

Setting Up RabbitMQ for Aras Innovator – A Simple Guide

If you’re running Aras Innovator in a clustered environment, you’ll quickly discover that keeping cached data consistent across all your…

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:

  1. A change happens on Server A.
  2. Local cache is cleared.
  3. RabbitMQ queues an invalidation message.
  4. 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


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

  1. Open InnovatorServerConfig.xml on each Aras node.
  2. Disable the SQL-based broker: <!-- Cache invalidation_broker_type="DatabaseDependency"/-->
  3. Add RabbitMQ settings: <Cache RabbitServiceHost="192.168.1.10" RabbitUser="admin_44" RabbitPassword="mypassword" RabbitExchange="arasExchange_test" RabbitHostPort="5672" invalidation_broker_type="MessageQueueDependency" />
  4. 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.

Youssef Abou Afach

Leave a Reply

Your email address will not be published. Required fields are marked *