Skip to content

Commit f0c0759

Browse files
authored
chore: updating consumer SPI effect (#148)
* chore: updating consumer SPI effect * improvements * bumping runtime and fixing compilation
1 parent 25bf480 commit f0c0759

File tree

5 files changed

+14
-28
lines changed

5 files changed

+14
-28
lines changed

akka-javasdk-maven/akka-javasdk-parent/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
<!-- These are dependent on runtime environment and cannot be customized by users -->
4040
<maven.compiler.release>21</maven.compiler.release>
41-
<kalix-runtime.version>1.3.0-46b2781</kalix-runtime.version>
41+
<kalix-runtime.version>1.3.0-940b627</kalix-runtime.version>
4242

4343
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4444
<skip.docker>false</skip.docker>

akka-javasdk/src/main/scala/akka/javasdk/impl/consumer/ConsumerEffectImpl.scala

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,11 @@ import akka.javasdk.consumer.Consumer
2020
private[impl] object ConsumerEffectImpl {
2121
sealed abstract class PrimaryEffect extends Consumer.Effect {}
2222

23-
final case class ProduceEffect[T](msg: T, metadata: Option[Metadata]) extends PrimaryEffect {
24-
def isEmpty: Boolean = false
25-
}
23+
final case class ProduceEffect[T](msg: T, metadata: Option[Metadata]) extends PrimaryEffect {}
2624

27-
final case class AsyncEffect(effect: Future[Consumer.Effect]) extends PrimaryEffect {
28-
def isEmpty: Boolean = false
29-
}
25+
case object ConsumedEffect extends PrimaryEffect {}
3026

31-
case object IgnoreEffect extends PrimaryEffect {
32-
def isEmpty: Boolean = true
33-
}
27+
final case class AsyncEffect(effect: Future[Consumer.Effect]) extends PrimaryEffect {}
3428

3529
object Builder extends Consumer.Effect.Builder {
3630
def produce[S](message: S): Consumer.Effect = ProduceEffect(message, None)
@@ -40,18 +34,21 @@ private[impl] object ConsumerEffectImpl {
4034

4135
def asyncProduce[S](futureMessage: CompletionStage[S]): Consumer.Effect =
4236
asyncProduce(futureMessage, Metadata.EMPTY)
37+
4338
def asyncProduce[S](futureMessage: CompletionStage[S], metadata: Metadata): Consumer.Effect =
4439
AsyncEffect(futureMessage.asScala.map(s => Builder.produce[S](s, metadata))(ExecutionContext.parasitic))
40+
4541
def asyncEffect(futureEffect: CompletionStage[Consumer.Effect]): Consumer.Effect =
4642
AsyncEffect(futureEffect.asScala)
43+
4744
def ignore(): Consumer.Effect =
48-
IgnoreEffect
45+
ConsumedEffect
4946

5047
override def done(): Consumer.Effect =
51-
ProduceEffect(Done, None)
48+
ConsumedEffect
5249

5350
override def asyncDone(futureMessage: CompletionStage[Done]): Consumer.Effect =
54-
AsyncEffect(futureMessage.asScala.map(done => Builder.produce(done))(ExecutionContext.parasitic))
51+
AsyncEffect(futureMessage.asScala.map(_ => this.done())(ExecutionContext.parasitic))
5552
}
5653

5754
def builder(): Consumer.Effect.Builder = Builder

akka-javasdk/src/main/scala/akka/javasdk/impl/consumer/ConsumerImpl.scala

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import scala.concurrent.ExecutionContext
1010
import scala.concurrent.Future
1111
import scala.util.control.NonFatal
1212

13-
import akka.Done
1413
import akka.actor.ActorSystem
1514
import akka.annotation.InternalApi
1615
import akka.javasdk.Metadata
@@ -24,7 +23,7 @@ import akka.javasdk.impl.ComponentType
2423
import akka.javasdk.impl.ErrorHandling
2524
import akka.javasdk.impl.MetadataImpl
2625
import akka.javasdk.impl.consumer.ConsumerEffectImpl.AsyncEffect
27-
import akka.javasdk.impl.consumer.ConsumerEffectImpl.IgnoreEffect
26+
import akka.javasdk.impl.consumer.ConsumerEffectImpl.ConsumedEffect
2827
import akka.javasdk.impl.consumer.ConsumerEffectImpl.ProduceEffect
2928
import akka.javasdk.impl.serialization.JsonSerializer
3029
import akka.javasdk.impl.telemetry.ConsumerCategory
@@ -101,11 +100,7 @@ private[impl] final class ConsumerImpl[C <: Consumer](
101100

102101
private def toSpiEffect(message: Message, effect: Consumer.Effect): Future[Effect] = {
103102
effect match {
104-
case ProduceEffect(msg: Done, metadata) =>
105-
Future.successful(
106-
new SpiConsumer.ProduceEffect(
107-
payload = Some(serializer.toBytes(msg)),
108-
metadata = MetadataImpl.toSpi(metadata)))
103+
case ConsumedEffect => Future.successful(SpiConsumer.ConsumedEffect)
109104
case ProduceEffect(msg, metadata) =>
110105
if (consumerDestination.isEmpty) {
111106
val baseMsg = s"Consumer [$componentId] produced a message but no destination is defined."
@@ -123,8 +118,6 @@ private[impl] final class ConsumerImpl[C <: Consumer](
123118
.recover { case NonFatal(ex) =>
124119
handleUnexpectedException(message, ex)
125120
}
126-
case IgnoreEffect =>
127-
Future.successful(SpiConsumer.IgnoreEffect)
128121
case unknown =>
129122
throw new IllegalArgumentException(s"Unknown TimedAction.Effect type ${unknown.getClass}")
130123
}

akka-javasdk/src/main/scala/akka/javasdk/impl/workflow/WorkflowImpl.scala

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,16 +105,12 @@ class WorkflowImpl[S, W <: Workflow[S]](
105105
val failoverRecoverStrategy = definition.getStepRecoverStrategy.toScala.map(toRecovery)
106106
val stepTimeout = definition.getStepTimeout.toScala.map(_.toScala)
107107

108-
val defaultStepConfig = Option.when(failoverRecoverStrategy.isDefined) {
109-
new SpiWorkflow.StepConfig("", stepTimeout, failoverRecoverStrategy)
110-
}
111-
112108
new SpiWorkflow.WorkflowConfig(
113109
workflowTimeout = definition.getWorkflowTimeout.toScala.map(_.toScala),
114110
failoverTo = failoverTo,
115111
failoverRecoverStrategy = failoverRecoverStrategy,
116112
defaultStepTimeout = stepTimeout,
117-
defaultStepConfig = defaultStepConfig,
113+
defaultStepRecoverStrategy = failoverRecoverStrategy,
118114
stepConfigs = stepConfigs)
119115
}
120116

project/Dependencies.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ object Dependencies {
88
val ProtocolVersionMinor = 1
99
val RuntimeImage = "gcr.io/kalix-public/kalix-runtime"
1010
// Remember to bump kalix-runtime.version in akka-javasdk-maven/akka-javasdk-parent if bumping this
11-
val RuntimeVersion = sys.props.getOrElse("kalix-runtime.version", "1.3.0-46b2781")
11+
val RuntimeVersion = sys.props.getOrElse("kalix-runtime.version", "1.3.0-940b627")
1212
}
1313
// NOTE: embedded SDK should have the AkkaVersion aligned, when updating RuntimeVersion, make sure to check
1414
// if AkkaVersion and AkkaHttpVersion are aligned

0 commit comments

Comments
 (0)