表示一个信道接收函数,对收到的所有消息应用 fun.
ChannelReceiverFunction
表示一个信道接收函数,对收到的所有消息应用 fun.
更多信息和选项
- CloudDeploy[ChannelReceiverFunction[…]] 给出一个 CloudObject,含有指定信道接收器消息应发往的信道的元信息.
- CloudDeploy[ChannelReceiverFunction[…]"curi"] 把接收器部署到 ChannelObject["curi"].
- CloudDeploy[ChannelReceiverFunction[…]channel] 把接收器部署到 ChannelObject[…] 指定的信道.
- CloudDeploy[ChannelReceiverFunction[…]] 等价于 CloudDeploy[ChannelReceiverFunction[…]Automatic].
- 在部署的 ChannelReceiverFunction[fun] 中,只要收到消息,就会计算 fun[assoc]. 关联 assoc 中包含有与 ChannelListen 相同的元素,除了ChannelListener 对象特有的元素.
- CloudDeploy[ChannelReceiverFunction[fun]] 设置在云中执行的信道接收器函数,并且不需要在任何特定 Wolfram 语言会话中有活动的监听器.
- 函数 fun 在信道接收器函数的所有者的环境中进行计算.
- 信道接收器函数不能由本身从信道接收器函数内发送的消息触发.
范例
打开所有单元 关闭所有单元基本范例 (3)
f = ChannelReceiverFunction[{#Message, #MessageID}&]f[<|"Message" -> "message", "MessageID" -> "id"|>]f = ChannelReceiverFunction[CloudPut[#Message, CloudObject[ "LastMessage"]]&]object = CloudDeploy[f]channel = ChannelObject[object]ChannelSend[channel, "hello"]CloudGet[CloudObject["LastMessage"]]DeleteChannel[channel];
DeleteObject[object];bin = CreateDatabin[];
f = ChannelReceiverFunction[DatabinAdd[bin, #]&]object = CloudDeploy[f]channel = ChannelObject[object]ChannelSend[channel, "hello"]bin["Entries"]Wolfram Data Drop 对时间戳进行了特殊处理,并且可以在单独的属性中(或与 “FullEntries” 属性中的条目正文一起)使用:
bin["Timestamps"]DeleteChannel[channel];
DeleteObject[{object, bin}];范围 (7)
ChannelReceiverFunction[#&][<|"Message" -> <|"a" -> "b"|>, "MessageID" -> "id"|>]ChannelReceiverFunction[#Message&]["{\"x\":\"1\"}"]obj = CloudDeploy[ChannelReceiverFunction[#&]]ChannelObject[obj]DeleteChannel[%];
DeleteObject[obj];obj = CloudDeploy[ChannelReceiverFunction[#&] -> "channel"]ChannelObject[obj]DeleteChannel[%];
DeleteObject[obj];obj = CloudDeploy[ChannelReceiverFunction[#&], "cloudObject"]ChannelObject[obj]DeleteChannel[%];
DeleteObject[obj];obj = CloudDeploy[ChannelReceiverFunction[#&] -> "channel", "cloudObject"]ChannelObject[obj]DeleteChannel[%];
DeleteObject[obj];obj = CloudDeploy[ChannelReceiverFunction[#&] -> ChannelObject["channel"], CloudObject["x"]]ChannelObject[obj]DeleteChannel[%];
DeleteObject[obj];应用 (3)
bin = CreateDatabin[]obj = CloudDeploy[ChannelReceiverFunction[DatabinAdd[bin, <|"Data" -> #Message|>]&] -> "channel"]ChannelSend["channel", "hello"]bin["Entries"]DeleteObject[{bin, obj}];
DeleteChannel["channel"];定义接收器函数,将包含字符串 "URGENT" 的消息发送到优先信道,其余的发送到普通信道 (bulk channel):
f = ChannelReceiverFunction[ChannelSend[If[StringContainsQ[#Message, "URGENT"], "priority", "bulk"], #Message]&]CreateChannel /@ {"priority", "bulk"}
obj = CloudDeploy[f -> "dispatcher"]priority = ChannelListen["priority"]bulk = ChannelListen["bulk"]Scan[ChannelSend["dispatcher", #]&, {"URGENT message", "low priority"}]priority["Message"]bulk["Message"]DeleteChannel[{"priority", "bulk", "dispatcher"}];
DeleteObject[obj];如果消息到达时无人监听,则部署发送电子邮件警报的接收器函数:
channel = "withAlert";
CreateChannel[channel];obj = CloudDeploy[ChannelReceiverFunction[If[ChannelSubscribers[channel] === {}, SendMail[<|"To" -> $WolframID, "Subject" -> "missed message from " <> #RequesterWolframID, "Body" -> #Message|>]]&] -> channel]ChannelSend[channel, "Are you there?"]DeleteChannel[channel];
DeleteObject[obj];属性和关系 (1)
部署 ChannelReceiverFunction 将会设置相关信道对象的 ChannelBrokerAction:
CloudDeploy[ChannelReceiverFunction[#&]]Options[ChannelObject[%], ChannelBrokerAction]文本
Wolfram Research (2017),ChannelReceiverFunction,Wolfram 语言函数,https://reference.wolfram.com/language/ref/ChannelReceiverFunction.html (更新于 2020 年).
CMS
Wolfram 语言. 2017. "ChannelReceiverFunction." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2020. https://reference.wolfram.com/language/ref/ChannelReceiverFunction.html.
APA
Wolfram 语言. (2017). ChannelReceiverFunction. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/ChannelReceiverFunction.html 年
BibTeX
@misc{reference.wolfram_2026_channelreceiverfunction, author="Wolfram Research", title="{ChannelReceiverFunction}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/ChannelReceiverFunction.html}", note=[Accessed: 18-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_channelreceiverfunction, organization={Wolfram Research}, title={ChannelReceiverFunction}, year={2020}, url={https://reference.wolfram.com/language/ref/ChannelReceiverFunction.html}, note=[Accessed: 18-August-2026]}