Migration Guide v2
From 1.3.x to 2.0.0
This guide only describes how to migrate your existing application.
Summary:
- ALL persisted data from baker
1.3.x
IS COMPATIBLE and can be used with2.0.x
- When running a cluster DOWNTIME IS REQUIRED because of binary incompatible changes in the message protocol.
- Some small code refactors are necessary (see below).
For a full list new features see the changelog.
Downtime required for clusters with state
In 2.0.0
some binary incompatible changes where made in the message protocol.
This requires you to bring down the entire cluster (1.3.x
) and bring it up again (2.0.0
).
A rolling deploy IS NOT tested and NOT recommended.
Removed Ingredient interface
com.ing.baker.recipe.javadsl.Ingredient
was removed.
This was a tagging interface that was not used in the project.
You can remove all references to this interface in your project.
One thing to note is that Ingredient
extended from scala.Serializable
.
If you depended on this behaviour just replace Ingredient
by scala.Serializable
.
@ProvidesIngredient removed
In 1.3.x
you could directly provide an ingredient from an interaction. For example:
import com.ing.baker.recipe.annotations.ProvidesIngredient;
interface GetEmail {
@ProvidesIngredient("email")
String apply(@RequiresIngredient("customer") Customer customer);
}
This feature has been removed. Internally this was already translated to an implicitly generated event: $interactionName + Successful
.
Now it is required that you do this expclitly to avoid confusion.
The refactor is very straight forwfard:
import com.ing.baker.recipe.annotations.FiresEvent;
interface GetEmail {
public class GetEmailSuccessful {
public final String email;
public ExampleInteractionSuccessful(String email) {
this.email = email;
}
}
@FiresEvent(oneOf = { GetEmailSuccessful.class } )
GetEmailSuccessful apply(@RequiresIngredient("customer") Customer customer);
}
If you use lombok annotations you can get rid of a lot of the boiler plate by using @Value
on the event class.
In scala
it is recommended to use case classes.