@@ -410,8 +410,9 @@ mod config {
410410 ResourceBasedSlotsOptions , ResourceBasedSlotsOptionsBuilder , ResourceSlotOptions ,
411411 SlotSupplierOptions as CoreSlotSupplierOptions , TunerHolder , TunerHolderOptionsBuilder ,
412412 api:: worker:: {
413- ActivitySlotKind , LocalActivitySlotKind , PollerBehavior , SlotKind , WorkerConfig ,
414- WorkerConfigBuilder , WorkerConfigBuilderError , WorkflowSlotKind ,
413+ ActivitySlotKind , LocalActivitySlotKind , PollerBehavior as CorePollerBehavior ,
414+ SlotKind , WorkerConfig , WorkerConfigBuilder , WorkerConfigBuilderError ,
415+ WorkflowSlotKind ,
415416 } ,
416417 } ;
417418
@@ -428,8 +429,8 @@ mod config {
428429 namespace : String ,
429430 tuner : WorkerTuner ,
430431 non_sticky_to_sticky_poll_ratio : f32 ,
431- max_concurrent_workflow_task_polls : usize ,
432- max_concurrent_activity_task_polls : usize ,
432+ workflow_task_poller_behavior : PollerBehavior ,
433+ activity_task_poller_behavior : PollerBehavior ,
433434 enable_non_local_activities : bool ,
434435 sticky_queue_schedule_to_start_timeout : Duration ,
435436 max_cached_workflows : usize ,
@@ -440,6 +441,18 @@ mod config {
440441 shutdown_grace_time : Option < Duration > ,
441442 }
442443
444+ #[ derive( TryFromJs ) ]
445+ pub enum PollerBehavior {
446+ SimpleMaximum {
447+ maximum : usize ,
448+ } ,
449+ Autoscaling {
450+ minimum : usize ,
451+ maximum : usize ,
452+ initial : usize ,
453+ } ,
454+ }
455+
443456 impl BridgeWorkerOptions {
444457 pub ( crate ) fn into_core_config ( self ) -> Result < WorkerConfig , WorkerConfigBuilderError > {
445458 // Set all other options
@@ -452,12 +465,8 @@ mod config {
452465 . namespace ( self . namespace )
453466 . tuner ( self . tuner . into_core_config ( ) ?)
454467 . nonsticky_to_sticky_poll_ratio ( self . non_sticky_to_sticky_poll_ratio )
455- . workflow_task_poller_behavior ( PollerBehavior :: SimpleMaximum (
456- self . max_concurrent_workflow_task_polls ,
457- ) )
458- . activity_task_poller_behavior ( PollerBehavior :: SimpleMaximum (
459- self . max_concurrent_activity_task_polls ,
460- ) )
468+ . workflow_task_poller_behavior ( self . workflow_task_poller_behavior )
469+ . activity_task_poller_behavior ( self . activity_task_poller_behavior )
461470 . no_remote_activities ( !self . enable_non_local_activities )
462471 . sticky_queue_schedule_to_start_timeout ( self . sticky_queue_schedule_to_start_timeout )
463472 . max_cached_workflows ( self . max_cached_workflows )
@@ -470,6 +479,25 @@ mod config {
470479 }
471480 }
472481
482+ impl From < PollerBehavior > for CorePollerBehavior {
483+ fn from ( val : PollerBehavior ) -> Self {
484+ match val {
485+ PollerBehavior :: SimpleMaximum { maximum } => {
486+ CorePollerBehavior :: SimpleMaximum ( maximum)
487+ }
488+ PollerBehavior :: Autoscaling {
489+ minimum,
490+ maximum,
491+ initial,
492+ } => CorePollerBehavior :: Autoscaling {
493+ minimum,
494+ maximum,
495+ initial,
496+ } ,
497+ }
498+ }
499+ }
500+
473501 #[ derive( TryFromJs ) ]
474502 #[ allow( clippy:: struct_field_names) ]
475503 pub ( super ) struct WorkerTuner {
0 commit comments