Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 20:57
    IgorFedchenko commented #4085
  • 20:32
    IgorFedchenko commented #4085
  • 20:01
    IgorFedchenko commented #4085
  • 19:55
    IgorFedchenko commented #4085
  • 16:22
    Aaronontheweb labeled #3997
  • 16:22
    Aaronontheweb closed #3997
  • 16:20
    IgorFedchenko commented #3997
  • 16:08
    IgorFedchenko commented #4085
  • 15:50
    Aaronontheweb assigned #4085
  • 15:50
    Aaronontheweb labeled #4085
  • 15:50
    Aaronontheweb labeled #4085
  • 15:49
    Aaronontheweb closed #4032
  • 14:58
    IgorFedchenko commented #4032
  • 14:57
    IgorFedchenko opened #4085
  • Dec 05 17:21
    Aaronontheweb synchronize #4079
  • Dec 05 17:20
    Aaronontheweb labeled #4084
  • Dec 05 17:20
    Aaronontheweb labeled #4084
  • Dec 05 17:20
    Aaronontheweb milestoned #4084
  • Dec 05 17:20

    Aaronontheweb on dev

    Remove string interpolation fro… (compare)

  • Dec 05 17:20
    Aaronontheweb closed #4084
zbynek001
@zbynek001
ok, will have to update the sharding again, because it's causing some issues there
NyronW
@NyronW
@mwardm I think that the only way I can have a fully decouple set of services is to use a json string. WHat I meant by shared library to store the messages used throughout the system is that the class library would contain the message/class that used to pass data between each micro service. e.g. ProcessPayment(string customer, Guid OrderId, double Amount). All the micro services would need to add reference to that shared library, thus creating source code coupling between the services as they all depend on that library
Joshua Garnett
@joshgarnett
@NyronW definitely take a look at protobuf for your shared messages. It’s the direction the Scala/Java project has gone in. Then you can just share the protobuf schema and not worry as much about sharing the c# code.
NyronW
@NyronW
@joshgarnett I am not very familiar with protobuf schema, how they enable to accomplish my goal of a fully decouple set of micro services?
Vagif Abilov
@object
Looks like we hit a major bug in Hyperion when it comes to JObject serialization: akkadotnet/Hyperion#66
Youenn Bouglouan
@Youenn-Bouglouan
Hi @NyronW, a few remarks on what I read so far. First, I'm not really convinced that having a single common library shared be every microservice is the way to go. It's very unlikely that each microservice will have to talk to all the remaining ones. Why not create a common library by topic instead ?
Second, if you do semantic versioning (major minor build...) then you do not need to redeploy everything each time you change something in the shared library. If the changes are only additive, then
You can have microservices using 2 different versions of the same livrrat
Library* at the same time.
Youenn Bouglouan
@Youenn-Bouglouan
Last remark ☺you mentioned a message example that looks like this: {type:"MyEvent", serviceId: "ActorSystemA",payload: {prop1:0, prop2:"foo"}}.
Doing so, you're making the messages dependent on the implementation of the microservices. What if you want to drop actors altogether in the next version? You'd have to redefine all your messages. IMO your messages should be implementation-agnostic. Only the microservice that receives a message should decide what to do with the data in it.
Robert Stiff
@uatec
A question about pooling. If an actor creates a pool, but then that parent actor dies... what happens to the pool?
can I find the pool again somehow when the parent actor comes back up? or will the pool children die too and then need to be recreated?
Arjen Smits
@Danthar
@uatec when the parent actor stops. So will all its children
Robert Stiff
@uatec
okay, then that's... manageable
so if i start my parent on Node1, but then that node crashes, Is it possible to make sure that it comes back again on another node?
Janusz Fijałkowski
@JohnnyTheAwesome
@uatec You could try to use Cluster Singleton. I think it's supposed to migrate to a new node when current one crashes.
Janusz Fijałkowski
@JohnnyTheAwesome
While using CoordinatedShutdown with exit-clr = on I get a failed association error thrown in Lighthouse, it appears after the "Leader is removing confirmed Exiting node" message. Is this supposed to happen? Is there a cleaner way to shut down the remote before closing the application?
Robert Stiff
@uatec
i'll give it a go
so once it's started, the only way to stop it would be to kill the entire cluster, or find it and terminate the cluster singleton thingy
Janusz Fijałkowski
@JohnnyTheAwesome
@uatec Quoting the docs: "You can communicate with cluster singleton actors by using ClusterSingletonProxy. It will automatically keep track of the actor's current location, update it if necessary and buffer all messages during the handover process." So finding it shouldn't be a problem. I haven't used this feature yet tho, so I might be missing something.
Robert Stiff
@uatec
oh cool, that sounds exactly what i want
now, if only I could convince it to actually start
Robert Stiff
@uatec
it's starting the singleton manager, but not my singleton
Robert Stiff
@uatec
wah? my lighthouse keeps shutting itself down
zbynek001
@zbynek001
Any idea why Serialization.SerializedActorPath sometimes returns path without address? This then messes up comparing actor references. E.g. in sharding i've events ShardHomeAllocated with full address of region but then I have ShardRegionTerminated with just local address of region. And the PersistentShardCoordinator state get's corrupted by this, because they are not equals
Robert Stiff
@uatec
hmm
i'm using Castle DI, and when a remote actor starts on that node, Akka.net invokes a random windsor dependency resolver, without a system attached :|
Robert Stiff
@uatec
curiouser and curiouser. some actor is trying to receive and deserialize my Dependency resolver
ah crud, DI is not supported remotely
Robert Stiff
@uatec
that's pretty fatal
NyronW
@NyronW
@Youenn-Bouglouan thanks for your feedback, the shared library by topic is a good suggestion, it reduces the level of coupling btween servcies and gives the benefits of strongly typed messages. I wonder how this is accomplished using a massage queue/bus?
Gregorius Soedharmo
@Arkatufus
wait, are we still talking about akka here? o__O
Robert Stiff
@uatec
@Arkatufus yes. If different teams are distributing different actors within the same cluster
Robert Stiff
@uatec
I want to start my actors children AFTER snapshot recovery
so that i can initialise the children correctly
but if it is our first run, then there will be no snapshot recovery
is there a hook i can use for After snapshot Would have run?
Ilya Komendantov
@IlyaKomendantov_twitter
how about overriding OnReplaySuccess ?
Robert Stiff
@uatec
does that get called every time? even on first run?
Ilya Komendantov
@IlyaKomendantov_twitter
OnReplaySuccess is a virtual method which will be called when the recovery cycle ends successfully.
OnReplayFailure is a virtual method which will be called when the recovery cycle fails unexpectedly from some reason.
Robert Stiff
@uatec
hmm, i guess i'll give it a go
i didn't know about taht
good, it seems to be called, even if i have no existing snapshot or anything
great, thanks
exactly what i wanted
the docs talk about Rich Lifecycle Events
but it doesn't document them, except in the class documentation
Robert Stiff
@uatec
now i need to figure out what's wrong with my Cluster Singleton
if the node that initializes it starts second, the singleton never starts