Menu Close
13.5.6. 将测试事件提交到部署的功能
您可以使用 kn func emit
CLI 命令将 CloudEvent 发送到本地部署或部署到 OpenShift Container Platform 集群的功能。此命令可用于测试功能是否正常工作并且能够正确接收事件。
示例命令
$ kn func emit
kn func emit
命令默认在本地目录上执行,并假定此目录是一个功能项目。
13.5.6.1. kn func emit 可选参数
您可以使用 kn func emit
CLI 命令标记为发送的 CloudEvent 指定可选参数。
--help 命令输出的标志列表
Flags: -c, --content-type string The MIME Content-Type for the CloudEvent data (Env: $FUNC_CONTENT_TYPE) (default "application/json") -d, --data string Any arbitrary string to be sent as the CloudEvent data. Ignored if --file is provided (Env: $FUNC_DATA) -f, --file string Path to a local file containing CloudEvent data to be sent (Env: $FUNC_FILE) -h, --help help for emit -i, --id string CloudEvent ID (Env: $FUNC_ID) (default "306bd6a0-0b0a-48ba-b187-b633571d072a") -p, --path string Path to the project directory. Ignored when --sink is provided (Env: $FUNC_PATH) (default "/home/lanceball/src/github.com/nodeshift/opossum") -k, --sink string Send the CloudEvent to the function running at [sink]. The special value "local" can be used to send the event to a function running on the local host. When provided, the --path flag is ignored (Env: $FUNC_SINK) -s, --source string CloudEvent source (Env: $FUNC_SOURCE) (default "/boson/fn") -t, --type string CloudEvent type (Env: $FUNC_TYPE) (default "boson.fn")
特别是,您可能会发现指定以下参数很有用:
- 事件类型
-
被发送的事件类型。您可以在该事件制作者文档中从特定事件制作者处查找有关为事件设置的
type
参数的信息。例如,API 服务器源可将生成的事件的type
参数设置为dev.knative.apiserver.resource.update
。 - 事件源
-
生成该事件的唯一事件源。这可以是事件源的 URI,如
https://10.96.0.1/
或事件源的名称。 - 事件 ID
- 由事件制作者创建的随机唯一 ID。
- 事件数据
允许您为
kn func emit
命令发送的事件指定data
值。例如,您可以指定一个--data
值,如"Hello world!"
,以便事件包含此数据字符串。默认情况下,kn func emit
创建的事件中不包含任何数据。注意已部署到集群的功能可以对现有事件源的事件响应,该源提供属性(如
source
和type
)的值。这些事件通常具有 JSON 格式的data
值,用于捕获事件的特定域上下文。使用本文档中介绍的 CLI 标志,开发人员可以模拟这些事件以进行本地测试。您还可以使用
--file
标志发送事件数据,以提供包含事件数据的本地文件。- 数据内容类型
-
如果您使用
--data
标志为事件添加数据,您也可以通过使用--content-type
标志指定事件所传输的数据类型。在前面的示例中,数据为纯文本,因此您可以指定kn func emit --data "Hello world!" --content-type "text/plain"
。
使用标志指定事件参数的命令示例
$ kn func emit --type <event_type> --source <event_source> --data <event_data> --content-type <content_type> -i <event_ID>
$ kn func emit --type ping --source example-ping --data "Hello world!" --content-type "text/plain" -i example-ID
在磁盘上指定包含事件参数的文件的命令示例
$ kn func emit --file <path>
$ kn func emit --file ./test.json
指定到这个功能的路径的命令示例
您可以使用 --path
标志指定到功能项目的路径,或使用 --sink
标志为函数指定端点:
$ kn func emit --path <path_to_function>
$ kn func emit --path ./example/example-function
指定部署为 Knative 服务 (sink) 的功能的命令示例
$ kn func emit --sink <service_URL>
$ kn func emit --sink "http://example.function.com"
--sink
标志还接受将事件发送到本地运行的功能 local
的特殊值:
$ kn func emit --sink local