/// <summary> /// Обработчик старта ноды /// </summary> public void Started() { _status.AddCallback("test", action => { if (action.PayLoad == null) { _status.Next.Send(action.Message); } else { _status.Next.Send(action.PayLoad); } }); var apiService = _serviceProvider.GetRequiredService <IApiService>(); // Отправляем информацию о старте и количестве акторов в ноде try { var url = string.Format("{0}/api/worker/started", _nodeSettings.ClusterUrl); apiService.PutOrPostRequest <NodeStarted, string>(url, new NodeStarted() { ActorsCount = _nodeSettings.ActorsCount, Host = _nodeSettings.NodeUrl }); } catch (Exception ex) { SendError(ex.ToString()); _logger.Error(ex); } var cancellationTokenSource = new CancellationTokenSource(); // Добавил простой heartbeat чтобы отслеживать на кластере существование нод TaskRepeater.Interval(TimeSpan.FromSeconds(_heartbeatInterval), () => { try { apiService.GetRequest <string>(string.Format("{0}/api/worker/ready/{1}", _nodeSettings.ClusterUrl, _nodeSettings.NodeUrl)); } catch (Exception ex) { SendError(ex.ToString()); _logger.Error(ex); } }, cancellationTokenSource.Token, true); }
public async Task TaskRepeater_ShouldBeSentcurrencyToSap_WhenQueueHasOneValidElement() { var queueMock = new Mock <IQueuingService>(); var sapServiceMock = new Mock <ISapService>(); var loggerMock = new Mock <ILogger <TaskRepeater> >(); var slackServiceMock = new Mock <ISlackService>(); slackServiceMock.Setup(x => x.SendNotification(It.IsAny <string>())); using var sapTaskHandler = new TaskRepeater(loggerMock.Object, queueMock.Object, sapServiceMock.Object, slackServiceMock.Object); // We want only a result queueMock.SetupSequence(x => x.GetFromTaskQueue()) .Returns(new SapTask { CurrencyRate = new SapCurrencyRate { Currency = "ARS", Rate = "32", RateDate = "20202308" }, TaskType = SapTaskEnum.CurrencyRate }); sapServiceMock.Setup(x => x.SendToSap(It.IsAny <SapTask>())) .ReturnsAsync(new SapTaskResult { IsSuccessful = true, TaskName = "Test" }); await sapTaskHandler.StartAsync(CancellationToken.None); // Consider to wait a little if some of the expected actions occurs // asynchronously // await Task.Delay(5); await sapTaskHandler.StopAsync(CancellationToken.None); loggerMock.Verify( x => x.Log( LogLevel.Information, It.IsAny <EventId>(), It.Is <It.IsAnyType>((o, t) => o.ToString().Equals("Succeeded at Test.")), It.IsAny <Exception>(), (Func <It.IsAnyType, Exception, string>)It.IsAny <object>()), Times.Exactly(1)); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); GuidPoolLiteral.Text = TheHelper.JsSerializer.Serialize(TheGuidPool.CreateGuids(500)); var taskTypes = TheHelper.TypesImplementingInterface(typeof(IWorkflowTask)); var tasks = taskTypes.Select(taskType => TheWorkflowTaskFactory.CreateTask(taskType)).ToList(); var adapter = new WorkflowTaskCollectionUiAdapter(tasks); TaskInfoLiteral.Text = TheHelper.JsSerializer.Serialize(adapter); TaskRepeater.DataSource = adapter.Tasks.Values; TaskRepeater.DataBind(); }
public async Task TaskRepeater_ShouldBeSentBusinessPartnerToSap_WhenQueueHasOneValidElement() { var queueMock = new Mock <IQueuingService>(); var sapServiceMock = new Mock <ISapService>(); var loggerMock = new Mock <ILogger <TaskRepeater> >(); using var sapTaskHandler = new TaskRepeater(loggerMock.Object, queueMock.Object, sapServiceMock.Object); queueMock.SetupSequence(x => x.GetFromTaskQueue()) .Returns(new SapTask { DopplerUser = new DopplerUserDto { Id = 1, FederalTaxID = "27111111115", PlanType = 1 }, TaskType = SapTaskEnum.CreateOrUpdateBusinessPartner }); sapServiceMock.Setup(x => x.SendToSap(It.IsAny <SapTask>())) .ReturnsAsync(new SapTaskResult { IsSuccessful = true, TaskName = "Test" }); await sapTaskHandler.StartAsync(CancellationToken.None); // Consider to wait a little if some of the expected actions occurs // asynchronously // await Task.Delay(5); await sapTaskHandler.StopAsync(CancellationToken.None); loggerMock.Verify( x => x.Log( LogLevel.Information, It.IsAny <EventId>(), It.Is <It.IsAnyType>((o, t) => o.ToString().Equals("Succeeded at Test.")), It.IsAny <Exception>(), (Func <It.IsAnyType, Exception, string>)It.IsAny <object>()), Times.Exactly(1)); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); GuidPoolLiteral.Text = TheHelper.JsSerializer.Serialize(TheGuidPool.CreateGuids(500)); var taskTypes = TheHelper.TypesImplementingInterface(typeof(IWorkflowTask)); Log.Debug(string.Format("Found {0} types implementing IWorkflowTask", taskTypes.Count())); var tasks = taskTypes.Select(taskType => TheWorkflowTaskFactory.CreateTask(taskType)).ToList(); var adapter = new WorkflowTaskCollectionUiAdapter(tasks); TaskInfoLiteral.Text = TheHelper.JsSerializer.Serialize(adapter); var data = adapter.Tasks.Values.OrderBy(v => v.Name); TaskRepeater.DataSource = data; TaskRepeater.DataBind(); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoginInfo login = (LoginInfo)Session["login"]; List <TaskInfo> task = TaskDAO.GetTask(login.UserName); TaskRepeater.DataSource = task; TaskRepeater.DataBind(); if (task.Count == 0) { lblNoTask.Text = "No Task has been assigned by or to You!"; } else { lblNoTask.Text = "Following are tasks assigned by or to You!"; } } ddlAssignTo.DataSource = TaskDAO.userList(); ddlAssignTo.DataTextField = "FullName"; ddlAssignTo.DataValueField = "UserName"; ddlAssignTo.DataBind(); }