After ApsaraMQ for RocketMQ is integrated with Function Compute as an event source by using EventBridge, you can use ApsaraMQ for RocketMQ triggers to trigger the execution of the associated functions to perform custom operations on the messages that are published to ApsaraMQ for RocketMQ. This topic describes how to create an ApsaraMQ for RocketMQ trigger, configure the input parameters of the associated function, write function code, and test the function in the Function Compute console.
Overview
After you submit a request to create a trigger in the Function Compute console, Function Compute automatically creates event streams in EventBridge based on the configurations of the trigger.
After the trigger is created, you can view the information about the trigger in the Function Compute console. You can also view the information about the created resources in the EventBridge console. When a message is enqueued in the source ApsaraMQ for RocketMQ instance, the associated function in Function Compute is triggered. During function execution, message events are pushed to the function for processing separately or in batches based on your batch configuration. ApsaraMQ for RocketMQ triggers are suitable for scenarios in which end-to-end streaming data is processed.
Usage notes
The ApsaraMQ for RocketMQ instance that is used as the trigger source must reside in the same region as the Function Compute function.
If the number of created event streams exceeds the upper limit, you can no longer create ApsaraMQ for RocketMQ triggers.
For information about the limits on the number of resources that are used to create a trigger in one region by using a single Alibaba Cloud account, see Limits.
Before you start
EventBridge
Function Compute
ApsaraMQ for RocketMQ
Step 1: Create a trigger
Log on to the Function Compute console. In the left-side navigation pane, click Functions.
In the top navigation bar, select a region. On the Functions page, click the function that you want to manage.
On the function details page, click the Configurations tab. In the left-side navigation pane, click Triggers. Then, click Create Trigger.
In the Create Trigger panel, follow the on-screen instructions to configure the parameters and click OK.
The following table describes the basic parameters.
Parameter
Description
Example
Trigger Type
Select ApsaraMQ for RocketMQ from the drop-down list.
ApsaraMQ for RocketMQ
Name
Enter a trigger name.
rocketmq-trigger
Version or Alias
Default value: LATEST. If you want to create a trigger for another version or alias, go back to the Function Details page and switch to the specified version or alias in the upper-right corner. For more information about versions and aliases, see Manage versions and Manage aliases.
LATEST
ApsaraMQ for RocketMQ Instance
Select the ApsaraMQ for RocketMQ instance that you created.
MQ_INST_164901546557****_BX7****
Topic
Select the topic that you created on the ApsaraMQ for RocketMQ instance.
topic1
Tag
Specify a tag to filter messages.
After you specify a tag, function execution is triggered only when a message that contains the specified tag is received.
tag
Group ID
Select the group that you created on the ApsaraMQ for RocketMQ instance.
GID_group1
Consumer Offset
Select the offset from which ApsaraMQ for RocketMQ starts to pull messages from EventBridge. Valid values:
Latest Offset: pulls messages from the latest offset.
Earliest Offset: pulls messages from the earliest offset.
Timestamp: pulls messages from the specified timestamp.
Latest Offset
Invocation Method
Select a function invocation method.
Valid values:
Sync Invocation: This method is suitable for sequential invocations. When an event or a batch of events triggers the function, Function Compute runs the function and waits for a response before the function processes the next event or batch of events. The maximum payload of a synchronous invocation request is 32 MB. For more information, see Synchronous invocations.
Async Invocation: This method allows you to quickly consume events. When an event or a batch of events triggers the function, Function Compute immediately returns a response and continue processing the next event or batch of events. During this process, the function is executed in asynchronous mode. The maximum payload of an asynchronous invocation request is 128 KB. For more information, see Overview.
Sync Invocation
Trigger State
Specify whether to enable the trigger immediately after it is created. By default, Enable Trigger is selected, which indicates that the trigger is enabled immediately after it is created.
N/A
For information about advanced configurations such as push settings, retry policies, and dead-letter queues, see Advanced features of triggers.
After the trigger is created, it is displayed on the Triggers tab. To modify or delete a trigger, see Manage triggers.
Step 2: Configure the input parameters of the associated function
A source event in ApsaraMQ for RocketMQ is passed to the associated function as an input parameter in the form of event
. You can manually pass event
to the function to simulate event triggering and test the function to verify whether the code is correct.
On the Code tab of the function details page, click the icon next Test Function and select Configure Test Parameters from the drop-down list.
In the Configure Test Parameters panel, click the Create New Test Event or Modify Existing Test Event tab, enter the event name and event content, and then click OK.
Sample code of
event
:[ { "id":"94ebc15f-f0db-4bbe-acce-56fb72fb****", "source":"RocketMQ-Function-rocketmq-trigger", "specversion":"1.0", "type":"mq:Topic:SendMessage", "datacontenttype":"application/json; charset=utf-8", "subject":"acs:mq:cn-hangzhou:164901546557****:MQ_INST_164901546557****_BXhFHryi%TopicName", "time":"2021-04-08T06:01:20.766Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T02:05:16.791Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"RocketMQ-Function-rocketmq-trigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "topic":"TopicName", "systemProperties":{ "MIN_OFFSET":"0", "TRACE_ON":"true", "MAX_OFFSET":"8", "MSG_REGION":"cn-hangzhou", "KEYS":"systemProperties.KEYS", "CONSUME_START_TIME":1628577790396, "TAGS":"systemProperties.TAGS", "INSTANCE_ID":"MQ_INST_164901546557****_BXhFHryi" }, "userProperties":{ }, "body":"TEST" } }, { "id":"94ebc15f-f0db-4bbe-acce-56fb72fb****", "source":"RocketMQ-Function-rocketmq-trigger", "specversion":"1.0", "type":"mq:Topic:SendMessage", "datacontenttype":"application/json; charset=utf-8", "subject":"acs:mq:cn-hangzhou:164901546557****:MQ_INST_164901546557****_BXhFHryi%TopicName", "time":"2021-04-08T06:01:20.766Z", "aliyunaccountid":"164901546557****", "aliyunpublishtime":"2021-10-15T02:05:16.791Z", "aliyunoriginalaccountid":"164901546557****", "aliyuneventbusname":"RocketMQ-Function-rocketmq-trigger", "aliyunregionid":"cn-chengdu", "aliyunpublishaddr":"42.120.XX.XX", "data":{ "topic":"TopicName", "systemProperties":{ "MIN_OFFSET":"0", "TRACE_ON":"true", "MAX_OFFSET":"8", "MSG_REGION":"cn-hangzhou", "KEYS":"systemProperties.KEYS", "CONSUME_START_TIME":1628577790396, "TAGS":"systemProperties.TAGS", "INSTANCE_ID":"MQ_INST_164901546557****_BXhFHryi" }, "userProperties":{ }, "body":"TEST" } } ]
The following table describes the parameters contained in data. For information about parameters that are defined in the CloudEvents specification, see Overview.
Parameter
Type
Example
Description
topic
String
TopicName
The topic name.
systemProperties
Map
The system properties.
MIN_OFFSET
Int
0
The earliest offset.
TRACE_ON
Boolean
true
Indicates whether a message trace exists. Valid values:
true
false
MAX_OFFSET
Int
8
The latest offset.
MSG_REGION
String
cn-hangzhou
The region from which the message was sent.
KEYS
String
systemProperties.KEYS
The keys that are used to filter the message.
CONSUME_START_TIME
Long
1628577790396
The start time of message consumption. Unit: milliseconds.
UNIQ_KEY
String
AC14C305069E1B28CDFA3181CDA2****
The unique key of the message.
TAGS
String
systemProperties.TAGS
The tags that are used to filter the message.
INSTANCE_ID
String
MQ_INST_123456789098****_BXhFHryi
The ID of the ApsaraMQ for RocketMQ instance.
userProperties
Map
None
The user properties.
body
String
TEST
The message body.
Step 3: Write function code and test the function
After the trigger is created, you can write function code and test the function to verify whether the code is correct. When events that are generated by ApsaraMQ for RocketMQ are delivered to Function Compute by using EventBridge, the trigger automatically triggers the function.
On the Code tab of the Function Details page, write code in the code editor and click Deploy.
The following sample code provides an example on how to write function code in Node.js:
'use strict'; /* To enable the initializer feature please implement the initializer function as below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse the event parameters and process the event. callback(null, 'return result'); }
Click Test Function.
Additional information
To modify or delete an existing trigger, see Manage triggers.