Hi there,
I realized that in Actyx 2.10, emit
is marked as deprecated and publish
is recommended.
Could anybody give an example on how to use publish
? I tried to just replace “emit” with “publish” and it (obviously) did not work.
Thank you!
Hi there,
I realized that in Actyx 2.10, emit
is marked as deprecated and publish
is recommended.
Could anybody give an example on how to use publish
? I tried to just replace “emit” with “publish” and it (obviously) did not work.
Thank you!
Hi Dipta,
the transition from emit
to publish
serves two purposes:
emit
returned a result that was easy to overlook and ignore, possibly leading to event ordering issues — it is recommended practice to always await the result of publishing eventsemit
accepted any kind of tags for any kind of event, whereas the most convenient way of using publish
ensures that the types have been declared to match the event in questionThe recommended way to publish events has the following steps:
// Declare a tag type, possibly in a shared project or repository.
// This promises to only publish events of type MyEventType with the tag `my-event`
const myTag = Tag<MyEventType>('my-event')
// this is an additional tag that you may want to select events by later
const someOtherTag = Tag('other-tag')
// ... and now for the actual publishing part ...
// compute the tags to apply to an event, possibly adding further ones that
// don’t have an implication on the Typescript type, like to which entity ID
// this event belongs
const tags = myTag.withId(myEntityId).and(someOtherTag)
const event: MyEventType = ...
// the `.apply()` step ensures that the event matches the chosen tags
await pond.publish(tags.apply(event))
With Pond v3.2.3 there are also some new functions that allow you to take the result of tags.applyTyped(event)
and add more tags, if you want to split the application of tags across different functions in your code.
I think we’ll need to improve our documentation on the TS SDK and Pond, and until that happens I’m even happier to answer your questions here!
Regards,
Roland
Yes, I agree that the await is a very important thing here.
And I can confirm that the example works!
Thank you, Roland!
You’re very welcome!