These are chat archives for akkadotnet/akka.net

24th
Oct 2016
Amri Hidayat
@amri
Oct 24 2016 05:43 UTC
Hi, I was wondering how to manage Event class changes (add/rename/remove field) in akka persistence ?
Arjen Smits
@Danthar
Oct 24 2016 07:01 UTC

@dandago2_twitter regarding the API and the "feel" of akka.net. You need to understand that in order to be allowed to carry the name of 'Akka'. One of the rules we need to adhere to is that we stick to the JVM akka api as much as possible.
They (Aaron and Roger) could have created a port of Akka in .NET and implement their own API, but then they would not be allowed to call it Akka.NET.
And the api compatibility brings advantages as well. Its easier for people who know Akka from the JVM to start working with this. And most if not all documentation from the typesafe Akka website is applicable to Akka.NET as well.

Regarding the Create constructor pattern. I have the same opinion as @Horusiath . Its more a matter of taste for me.

@amri First off. Since Akka persistence uses EventSourcing. All the versioning theory from that field apply here as well.
Second: Akka persistence has something called EventAdapters which allow you to do seamless upgrades from old event versions to new ones as-they-are-read.
Amri Hidayat
@amri
Oct 24 2016 07:06 UTC
@Danthar thanks for the reference
Arjen Smits
@Danthar
Oct 24 2016 07:07 UTC
np
Sean Farrow
@SeanFarrow
Oct 24 2016 07:12 UTC
I have two question regarding distributed pub/sub, firstly, does this work with Akka.Streams? Secondly, is it possible ot subscribe to several topics at once along with subscribing to topics that haven't yet been created. I'm trying ot avoid having ot use Redis!
Arjen Smits
@Danthar
Oct 24 2016 09:11 UTC
@SeanFarrow You can have an actor be subscribed to multiple topics at the same time, by sending multiple Subscribe messages to the pubsub mediator
And subscribing to topics that haven't yet been created is not a problem
Technically a topic is created when it receives its first publish/subscribe
only thing is, is that if there are no subscribers, the message is dropped
Regarding the Akka.Streams integration. Afaik there is no integration out of the box. As in, there is no cluster integration out of the box.
But there have been lots of updates by @Silv3rcircl3. So i might be wrong (?)
Peter Bergman
@peter-bannerflow
Oct 24 2016 09:42 UTC
@Horusiath Thanks for the tip about router instantiation
Bartosz Sypytkowski
@Horusiath
Oct 24 2016 09:52 UTC
@SeanFarrow you can build sink/source from any actor if needed, or you can also use Sink.Queue and Source.Queue which work like asynchronous queue.
Marc Piechura
@marcpiechura
Oct 24 2016 10:50 UTC
@Danthar @SeanFarrow the limitation still exists, even on the jvm it's only possible if you use the new gearpump materializer
So we need to port gearpump first before we can use distributed streams ;-)
Bartosz Sypytkowski
@Horusiath
Oct 24 2016 11:50 UTC
@Silv3rcircl3 at least they are pretty fast - I'm afraid a little, that they done double work, as gearpump was first developed independently from akka-streams and it's now being adapted to it
Andrey Leskov
@andreyleskov
Oct 24 2016 12:10 UTC
Hi guys, is there any docs for Wire serializer versions compability? I have an issue that existing entities serialized with Wire 0.0.6 cannot be deserialized with Wire 0.8.1
Bartosz Sypytkowski
@Horusiath
Oct 24 2016 13:06 UTC
@andreyleskov I think, you should ask @rogeralsing about that
Andrey Leskov
@andreyleskov
Oct 24 2016 13:20 UTC
@Horusiath thanks, going to private chat )
Daniel Söderberg
@raskolnikoov
Oct 24 2016 13:33 UTC
Hi Akka developers. I couldent find any implementation of RavenDB for Akka.Persistence so I created a NuGet for this. You can check the repo over here: https://github.com/raskolnikoov/Akka.Persistance.RavenDB and the NuGet can be found here:
Daniel Söderberg
@raskolnikoov
Oct 24 2016 13:39 UTC
Sorry wrong name in the repo url. Here it is :) https://github.com/raskolnikoov/Akka.Persistence.RavenDB
Maciek Misztal
@mmisztal1980
Oct 24 2016 13:39 UTC
@ayoung Hi there, you need to deal with a couple of issues here. 1. you need to ensure that they'll be removed from the akka.cluster via a downing provider or by being downed. 2. you need to guarantee that they I'll be respawned on a node with a well known IP address and with a well known port (you can use SF placement constraints for that). Either that, or you could use some 3rd party service to aggregate the IPs of you seed nodes , and then retrieve them and use something like Akka.Cluster.Cluster.JoinSeedNodes(IEnumerable<Address>)
Arjen Smits
@Danthar
Oct 24 2016 13:52 UTC
Cool stuff @raskolnikoov
if you want you can add your plugin to the http://getakka.net/docs/Community%20Plugins page
One remark though, im not seeing an implementation of the test specs
Gregorius Soedharmo
@Arkatufus
Oct 24 2016 14:22 UTC
orleans doesn't have a good documentation, its in perpetual beta so tht the devs feels like its ok to break compatibility with new versions, and finding tutorials on it is hard so its really not that easy for newbies
Vagif Abilov
@object
Oct 24 2016 14:54 UTC
@dandago2_twitter I totally disagree with your remark about props, that they are "needed mainly for advanced scenarios such as remote deployment and clustering. Most of the time as you’re learning to use Akka .NET, you don’t really care about them". If an actor dies and needs to be restarted, it will be restarted with the same props that were originally used. So it's quite important to design them well, so they support serialization and bear all necessary information that will be needed when restarting the actor.
Christian Sparre
@christiansparre
Oct 24 2016 15:33 UTC
I'm getting a huge number of DeadLetter log events in the console when using the TestKit. Like "DeadLetter from [akka://test/user/testActor1#648589787] to" an actual actor that also receives the events because the test pass. Any idea why? Is this normal?
Daniel Söderberg
@raskolnikoov
Oct 24 2016 16:43 UTC
@Danthar I will commit the test specs asap! :)
Claudio Bernasconi
@claudiobernasconi
Oct 24 2016 16:58 UTC
Hi Akka devs! I've been studying Akka.Net for about 50 hours up to know. I know the basics and I implemented several sample applications. This is all preparation for a real world project. We are planning to implement a batch processing infrastructure on top of Akka.Net. We want to take advantage of the scalability, fault tolerance and persistence features of Akka.Net. As far as I researched most Actor Model implementations store their actor states within each actor to avoid accessing the database all the time. Since our jobs are heavily data oriented we expect a lot of reads and writes to the database. Do you think Akka.Net is a good fit for such a type of application or do you see any problems using Akka.Net in an environment where we cannot hold all the data for all jobs in memory?
Andrew Young
@ayoung
Oct 24 2016 17:08 UTC
@mmisztal1980 I think i figured out a way to do this without having to use placement constraints. By using the Service Discovery that Service Fabric provides, your well-known IP is replaced by a well-known fabric:/ URI location. From there you can know where your seed nodes are - even if they have been moved.
Vagif Abilov
@object
Oct 24 2016 18:09 UTC
@claudiobernasconi Actor persistence is based on event journals, so you need to inspect your data store needs and find out whether event sourcing fits well. If your application is heavily data oriented and you expect a lot of reads and writes, I wouldn't take anything for granted and perform some tests, including performance tests. In our projects we conveniently replaced all our database needs with persistent actors, but I wouldn't call our app heavily data oriented so your requirements can be quite different. But assuming persistent actors can do the job for you, it's a relief to get rid of the data layer and delegate them all persistence work.
Maciek Misztal
@mmisztal1980
Oct 24 2016 20:53 UTC
@ayoung yeah, you can try going that way, I haven't - as I've found different ways to do it :)
Claudio Bernasconi
@claudiobernasconi
Oct 24 2016 20:59 UTC
@object Thank you, this helps a lot. Do have or do you know about any kind of architectural documentation before and after implementing Akka.Net? It would be very helpful to see how a system changes from a standard 3-tier achitecture to an actor based architecture including the changes to the data persistence. I will do some performance tests for sure. As far as I see we can take advantage of clustering and job isolation which helps us with CPU limitations and scaling in general. Looks like I have to focus my research on RAM usage and I/O operations. What we basically want to do is to put more machines into the system to reduce the overall time consumption.
Vagif Abilov
@object
Oct 24 2016 21:09 UTC
@claudiobernasconi Unfortunately I don't have any public documentation on this topic. But since actor persistence is built around event sourcing, you should be able to find some examples.
Daniel Söderberg
@raskolnikoov
Oct 24 2016 21:57 UTC
Can the mailbox in Akka.net be persisted too?
@raskolnikoov check out AroundReceive