> For the complete documentation index, see [llms.txt](https://docs.frends.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.frends.com/reference/triggers/rabbitmq-trigger.md).

# RabbitMQ Trigger

In order to launch a Process through RabbitMQ messaging queues, RabbitMQ Trigger can be used.

You can learn more about Triggers in general [here](/reference/shapes/event-shapes/trigger.md).

## What is RabbitMQ Trigger?

RabbitMQ Trigger is like AMQP Trigger, and listens for new messages in RabbitMQ message queues and activates Processes accordingly. Suitable for event-driven architectures where asynchronous communication is key.

## Usage

To use a Trigger in your Process, add it to your Process canvas, and connect it to the beginning of your Process using a Sequence flow. If you are using multiple Triggers in your Process, all Triggers must connect to the same shape, which is also the first non-Trigger shape in your Process.

Once added to your Process, you can change the Trigger's type to match your requirement and give it a unique name. By default, the Trigger's type will provide a corresponding name for the Trigger. You can then configure the parameters for the chosen Trigger type.

For RabbitMQ Trigger, you should set up a messaging queue beforehand, and then connect the Trigger to it through its connection string and optionally a client certificate, as well as specify the queue to read messages from. You can also optionally set up default replies to a queue whenever a message is read and processed from the queue.

By creating a Process using RabbitMQ Trigger and activating said Process, the Frends Agent will start listening for messages from the queue and trigger the Process as necessary to handle the messages.

## Configuration

To set up a RabbitMQ Trigger, add the shape to Process canvas and connect it as part of your Process. After that, you can select the Trigger type and configure the parameters for it.

The common parameters available for all Triggers are explained on the [Trigger reference page](/reference/shapes/event-shapes/trigger.md#configuration). The following configuration parameters are available for RabbitMQ Trigger.&#x20;

### Queue

Name of the queue to listen to for messages. Environment Variables can be used here to use different queues for each Environment.

### Connection string

Connection string in the format of AMQP 0-9-1 URI for the RabbitMQ broker.&#x20;

### Use client certificate

New in Frends 6.3, RabbitMQ Trigger now supports mutual TLS authentication (mTLS) using client certificates. Toggle this option on to enable client certificate authentication.

### Client certificate type

When client certificates are enabled, choose the type of certificate to use.

#### Thumbprint

Use certificate from the certificate store on the Agent machine.

**Certificate thumbprint**: Thumbprint of the certificate to use from certificate store.

**Client certificate store**: Which store to use, **CurrentUser** or **LocalMachine**. Choice usually depends on the operating system which Agent is running on, with LocalMachine corresponding to Windows and CurrentUser to Linux.

#### PFX / P12

Use PFX or P12 certificate file directly from the Agent machine.

**Certificate file path**: Path to the PFX or P12 file on Agent machine.

**Client certificate password**: Password to the certificate file (optional).

#### PEM / CRT

Use PEM or CRT certificate file directly from the Agent machine.

**Certificate file path**: Path to the PEM or CRT file on Agent machine.

**Private key file path**: Path to the Private key file on Agent machine. If left empty, a combined PEM certificate file containing both certificate and the key is assumed.

### Skip server certificate validation

When client certificates are enabled, choose whether the server's certificate is validated or not. Recommended to enable only for Dev or Test Environments.

### Max concurrent messages

Numerical field to specify how many messages should at most be handled simultaneously. Essentially sets the maximum number of concurrent Process Instances for this Process. Each Process Instance will always handle a single message at a time.

### Retry message processing if exception thrown

Toggle option to set whether failed Process execution will acknowledge the processed message. When enabled, the failed message will be returned to the queue and reprocessed, triggering the Process again.

### Reply

Toggle switch to select whether or not an automatic reply is sent to a queue when a message is successfully processed from the queue. Reply contents will be the Process result for a successful execution.

Target queue for the replies is set in Default reply queue field.

### Reply errors

Toggle switch to select whether or not an automatic reply is sent to a queue when the Process execution fails to handle a message. Reply contents will be the Process result for a failed execution.

Target queue for the replies is set in Default reply queue field.

### Default reply queue

Text field to specify the queue replies are sent to. Environment Variables can be used here to use different queues for each Environment.

### Do not log trigger parameters

Toggle option that when enabled, hides the Trigger parameters from being logged in Process Instances.&#x20;

## Reference Values

In addition to the [default Trigger reference values](/reference/shapes/event-shapes/trigger.md#reference-values), RabbitMQ Trigger provides the following additional values.

### #trigger.data (Frends.ExecutableProcess.CaseInsensitivePropertyTree)

Object containing the data derived from input parameters and the resulting data from processing the Trigger.

### #trigger.data.BasicProperties (Dictionary\<String, String>)

Message properties set by the publisher of the message, at the time of publishing. You can learn more about the message properties at <https://www.rabbitmq.com/docs/publishers#message-properties>.

### #trigger.data.Body (String)

Contents of the message body.

### #trigger.data.ConsumerTag (String)

Message delivery and routing property, set by RabbitMQ broker during routing and delivery.&#x20;

Identifies the message's consumer or subscription which consumed the message.

### #trigger.data.DeliveryTag (Integer)

Message delivery and routing property, set by RabbitMQ broker during routing and delivery.&#x20;

Identifies the delivery (transaction from broker to consumer) of the message uniquely as incremental positive integer within the channel or queue.

### #trigger.data.Exchange (String)

Message delivery and routing property, set by RabbitMQ broker during routing and delivery.&#x20;

Identifies the exchange or node that delivered the message.

### #trigger.data.Redelivered (Boolean)

Message delivery and routing property, set by RabbitMQ broker during routing and delivery.&#x20;

Boolean value, which is set to True if the message has been delivered and requeued earlier.

### #trigger.data.RoutingKey (String)

Message delivery and routing property, set by RabbitMQ broker during routing and delivery.&#x20;

Identifies the target queue the publisher sent the message for. As the routing key can use wildcards, it allows the exact receiving queue to vary from the specified.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.frends.com/reference/triggers/rabbitmq-trigger.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
