- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果在同一个grain activation上有两个不同的reminders在同一个点触发,假设grain execution context是单线程的,两个reminders会同时执行和交错吗?
另外,提醒执行是否受默认30s超时限制?
最佳答案
提醒是使用常规的 grain 方法调用来调用的:IRemindable
接口(interface)是一个常规的 grain 接口(interface)。 IRemindable.ReceiveReminder(...)
没有被标记为 [AlwaysInterleave]
,所以它只会在你的 grain 类被标记为 [Reentrant]
.
简而言之:不,默认情况下提醒调用不会交错。
提醒不会覆盖 SiloMessagingOptions.ResponseTimeout
值,因此默认执行时间为 30 秒。
如果您有一个可能需要很长时间才能执行的提醒,您可以按照开始在后台任务中长时间运行的工作并确保它仍在运行(不是已完成或已出错)每当相关提醒触发时。
这是使用该模式的示例:
public class MyGrain : Grain, IMyGrain
{
private readonly CancellationTokenSource _deactivating = new CancellationTokenSource();
private Task _processQueueTask;
private IGrainReminder _reminder = null;
public Task ReceiveReminder(string reminderName, TickStatus status)
{
// Ensure that the reminder task is running.
if (_processQueueTask is null || _processQueueTask.IsCompleted)
{
if (_processQueueTask?.Exception is Exception exception)
{
// Log that an error occurred.
}
_processQueueTask = DoLongRunningWork();
_processQueueTask.Ignore();
}
return Task.CompletedTask;
}
public override async Task OnActivateAsync()
{
if (_reminder != null)
{
return;
}
_reminder = await RegisterOrUpdateReminder(
"long-running-work",
TimeSpan.FromMinutes(1),
TimeSpan.FromMinutes(1)
);
}
public override async Task OnDeactivateAsync()
{
_deactivating.Cancel(throwOnFirstException: false);
Task processQueueTask = _processQueueTask;
if (processQueueTask != null)
{
// Optionally add some max deactivation timeout here to stop waiting after (eg) 45 seconds
await processQueueTask;
}
}
public async Task StopAsync()
{
if (_reminder == null)
{
return;
}
await UnregisterReminder(_reminder);
_reminder = null;
}
private async Task DoLongRunningWork()
{
// Log that we are starting the long-running work
while (!_deactivating.IsCancellationRequested)
{
try
{
// Do long-running work
}
catch (Exception exception)
{
// Log exception. Potentially wait before retrying loop, since it seems like GetMessageAsync may have failed for us to end up here.
}
}
}
}
关于orleans - 奥尔良提醒执行是交错的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71065057/
我有一个java脚本代码如下,它应该改变“a”标签的颜色和 提醒他们的内部 HTML: function change(n){ for(i=1;i aaaa | bb
经过多次研究,我遇到了这个问题: 用户使用 setExactAndAllowWhileIdle 为我的应用程序设置一个警报时,每 9 分钟只能触发一次。 这导致了另一个问题,因为我的闹钟正在重复。我的
我想创建一个应用程序来保存笔记、提醒、日常任务,并希望在锁屏 上显示这些,当用户点击笔记时,应用程序将打开并使用自定义 View 和背景在屏幕上显示任务。我已经对如何执行此操作进行了大量搜索,但没有成
我正在研究 Bixby 集成,我正在浏览 Bixby 文档,我有一些关于 Bixby 提醒的营销信息,但我正在寻找如何以编程方式或通过 API 创建提醒,但我没有找到任何文档中的信息。 最佳答案 这是
例如,我希望在我休息的日子里每天在特定 channel 中显示提醒。就像是: /remind #channel @me will be on PTO 1/1/2016 until 1/5/2016 然
已关闭。此问题不符合 Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 a specific programming problem, a software al
我正在开发一个集成了提醒功能的Android应用程序。如果手机保持开机状态,通知就会起作用,但是当我关闭或重新启动手机时,我会丢失所有警报。我知道这是Android功能来提高手机效率,但我不知道该怎么
我没能在 Outlook 警报显示之前以编程方式将其消除。 Private Sub Application_Reminder(ByVal Item As Object) Dim objRem
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicate: JQuery to check for duplicate ids in a DOM 假设我有一个代码:
我正在构建一个网站,我想实现一个提醒功能,当人们有任何项目或事件到期时提醒他们,或者只是提醒他们他们可能设置的任何计时器。我知道如何使用 javascript 的计时器函数来完成此操作,但我希望它一直
我有一个带有“打开提示”按钮的模式: × Arquivo
“允许主页按钮取消警报。当警报可见时按主页退出应用程序。它也应该产生与点击取消按钮相同的效果——也就是说,警报被关闭而不执行任何操作。如果你的警报没有取消按钮,请考虑在按下主页按钮时运行的代码中实现取
我有一个构造函数,然后我用它来创建对象library_science1: function librarytech(humanity,food,wood,metal,wealth) { this.hu
我该怎么做,例如,我在 users.cshtml View 中创建一个用户,它验证 ActionResult Create(RegisterModel um) 如果一切正常,我想返回 users.cs
我熟悉使用 eventstore 搜索谓词,例如 predicateForIncompleteRemindersWithDueDateStarting:Ending:Calendars: 但我正在尝试
免责声明:这实际上不是编程问题,但我觉得 stackoverflow 上的观众比其他大多数问答网站更有可能找到答案。 乔尔,请原谅我盗用了你的问题。 Joel 不久前在播客上问过这个问题,但我认为它从
我想以编程方式在日历中添加事件,并且我已经成功完成了。但是当我调用日历 Intent 时,它将打开日历,其中包含事件详细信息。用户可以在保存之前修改该事件。 所以我希望该事件不可编辑。如果能自动添加就
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我可以提醒 setter 函数来处理 newValue 吗? 例如: var test:String{ willSet{ newValue = newValue+" Kitty
OAuth 对话框读写权限您的应用似乎同时请求读取和写入权限。相反,最初请求少量权限,并在用户决定共享时请求写入权限。 最佳答案 这似乎是 Facebook 开发人员的错误。 有人有asked the
我是一名优秀的程序员,十分优秀!