// This module is included in the following assemblies:
// as_connecting-to-amq.adoc

[id='adding-amq-connection-start_{context}']
= Adding an AMQ connection to trigger integration execution upon receiving messages

To trigger execution of an integration upon receiving a message
from a Red Hat AMQ broker, add a Red Hat AMQ connection as the start connection.

.Prerequisite
You created a Red Hat AMQ connection to the Red Hat AMQ broker that you want to obtain
messages from. 

.Procedure

. In the {prodname} panel on the left, click *Integrations*.
. Click *Create Integration*.
. On the *Choose a connection* page, click the Red Hat AMQ connection that
you want to use to start the integration. 
. On the *Choose an action* page, select the *Subscribe for messages* action
to receive messages from the queue or topic that you specify. 
. Configure the action:
.. In the *Destination name* field, enter the name of the queue or topic 
to receive data from. 
.. For the *Destination type*, accept *Queue* or select *Topic*. 
.. In the *Durable subscription ID* field, to allow connections to 
close and reopen without missing messages, enter the durable
subscription ID. The destination type must be a topic. 
.. In the *Message selector* field, if you want to receive only 
data that satisfies a particular condition, enter a filter expression.
+
A message selector is a string that contains an expression. The syntax of 
the expression is based on a subset of the SQL92 conditional expression syntax. 
The message selector in the following example selects any message that has a 
`NewsType` property whose value is set to `Sports` or `Opinion`:
+
`NewsType = ’Sports’ OR NewsType = ’Opinion’`
+
The message consumer receives only those messages whose headers and 
properties match the message selector expression. A message selector cannot select messages on 
the basis of the content of the message body.

. Click *Next* to specify the action's output type. 

. In the *Select Type* field, if the data type does not need to be known, 
accept *Type specification not required* 
and click *Next*. You do not need to follow the rest of these
instructions. 
+
However, a structured data type is recommended. For example, if you want 
to map the connection output in a data mapper step then you must specify 
the data type. The data mapper cannot display fields for unstructured data.
+
To specify the data type, click in the *Select Type* field and select one of the following as the schema type:
+
* *JSON schema* is a document that describes the structure of JSON data.
The document's media type is `application/schema+json`. 
* *JSON instance* is a document that contains JSON data. The document's 
media type is `application/json`. 
* *XML schema* is a document that describes the structure of XML data.
The document's file extension is `.xsd`.
* *XML instance* is a document that contains XML data. The
document's file extension is `.xml`. 
* *CSV instance* is a document that contains comma-separated value (CSV) data. The document's file extension is `.csv`. 
ifeval::["{location}" == "downstream"]
+
*Note* _Data Mapper support for CSV data is a Technology Preview feature only._
endif::[]

. In the *Definition* input box, paste a definition that conforms to the
schema type you selected. 
For example, if you select *JSON schema* then you would paste the content of
a JSON schema file, which has a media type of `application/schema+json`.

. In the *Data Type Name* field, enter a name that you choose for the
data type. For example, if you are specifying a JSON schema for
vendors then you might specify `*Vendor*` as the data type name. 
+
You will see this data type name when you are creating 
or editing an integration that uses the connection
for which you are specifying this type. {prodname} displays the type name
in the integration visualization and in the data mapper. 

. In the *Data Type Description* field, provide information that helps you
distinguish this type. This description appears in the data mapper when 
you hover over the step that processes this type. 
. Click *Next*. 

.Result
The connection appears at the beginning of the integration flow.
