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

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

To trigger execution of an integration upon receiving messages from
an AMQP broker, add an AMQP connection as the integration's start connection. 

.Prerequisites
* You created a connection to the AMQP broker that you want to receive 
messages from.
* You are creating an integration and {prodname} is prompting you
to choose the start connection. 

.Procedure
 
. On the *Choose a connection* page, click the AMQP 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. 
