Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
  • 00:06
    Aaronontheweb commented #4806
  • Mar 05 20:47
    Arkatufus commented #71
  • Mar 05 20:30
    Arkatufus commented #72
  • Mar 05 20:29
    Arkatufus commented #72
  • Mar 05 20:26
    Arkatufus commented #69
  • Mar 05 20:17
    Arkatufus commented #65
  • Mar 05 20:12
    Arkatufus commented #71
  • Mar 05 19:53
    CumpsD commented #70
  • Mar 05 19:51
    Arkatufus closed #36
  • Mar 05 19:51
    Arkatufus commented #36
  • Mar 05 19:49
    Arkatufus closed #23
  • Mar 05 19:49
    Arkatufus commented #23
  • Mar 05 19:45
    Arkatufus closed #66
  • Mar 05 19:45
    Arkatufus commented #66
  • Mar 05 19:27
    Arkatufus closed #79
  • Mar 05 19:27
    Arkatufus commented #79
  • Mar 05 19:05

    dependabot-preview[bot] on dev

    Bump Google.Protobuf from 3.15.… (compare)

  • Mar 05 19:05

    dependabot-preview[bot] on nuget


  • Mar 05 19:05
    dependabot-preview[bot] closed #4812
  • Mar 05 18:26
    Arkatufus closed #56
Filip Nowak
Hi, I'm a newbie in the akka.net world. I readed a lot about it and I like it very much. But I still doesn't understand one thing: for example, if I'd like to create an eshop with using akka.net and I've a catalog with 100000 items. Where are these items stored? Will I have a 100000 actors, one per a catalog item? I'm sorry for the stupid question, I'm coming from relational database centric development world, so this I still dont understand. Many thanks.
Vagif Abilov
Hello. We are using cluster sharding in a combination with DistributedData. DistributedData is still marked as "experimental" in Akka.NET docs, but are there any known issues with it? The documentation says "At this moment this mode doesn't support akka.cluster.sharding.remember-entities option", but this line has been there since the version 1.3.2, and I hope that remember-entities can be used now with ddata (we need it badly). Does anyone know the current state of this issue?
Am I right in thinking that DistributedData is an in-memory, i.e. non-persistent store? What would remember-entities do when backing onto such a system?
Paweł Bańka
@jameswilddev remember-entities is a setting that causes automatic starting of entities in case of shard rebalancing. Yes DistributedData is in-memory, but as long as there are some nodes of the cluster left (which is a case in of moving a shard from one node to another) the data should be still accessible. Note that JVM Akka supports this (https://doc.akka.io/docs/akka/2.5/cluster-sharding.html#remembering-entities).
Ismael Hamed
@pmbanka @object @jameswilddev At least in the JVM, since 2.5 remember entities are stored with durable ddata. Given DistributedData in Akka.NET uses LMDB too, I'm guessing it should do the same.
Alexandr Baranovskyi
Wanted to ask a quick question, is it possible to set two lighthouses as seed-nodes for each other?
I tried to do it, but both of them get stuck in infinite loops of reconnection.
However, once I remove the cycle (delete one of the references) everything goes back to normal.
Maciek Misztal
Can anyone elaborate if it’s feasible to create actor hierarchies running in shards?
Boris Lange
Hey, i have a question concerning stateful/persistent actors in general. we have actors and their state is represented via domain models. some of those domain models have other domain models as nested entities. we naively just assigned the state of actors as the nested properties of other actors state objects and recently found out that after restart and recovery, updating the original actor state will not update the (prior same) objects that are nested in others actors state. now my question: what is the best design choice for having stateful/persistent actors, with nested state properties of other actors and have them being updated by just updating the primary actors state?
should we only ever store ids/actorrefs of nested actors state and resolve their state when performing actions where we need their data or are c# refs a solution (ptr-ish)? or is there a solution that we are just missing?
Vagif Abilov
@mmisztal1980 You mean creating a root actor in a shard and spawning a hierarchy of child actors? No problem with that.
@langebo It makes sense (and simplifies a few things) if you associate persistent state with the state of your aggregate root in DDD terms. You can still persist events associated with nested (smaller) scope, but they all should contribute in building up a state of the aggregate.
Boris Lange
@object Ok to make my question more concrete. I have persistent actors: ResourceActor with a state class Resource and an AppointmentActor with a state class Appointment. Appointment has a list of Resource objects. Given that i instantiate multiple ResourceActors with their respective state objects and an AppointmentActor with their respective state containing some of my Resource state objects, what we are experiencing is, that when i change the state of a Resource state object and it gets persisted, the changes on that object are not reflected in the Resources list of my Appointment after restarting and replaying my actor system. Means the Resource IS changed. Its occurence in the Appointments list of resources IS NOT. (Because after replaying both aren't the same object instantiation anymore and the state change of the resource is not replayed in the context of the Appointment)
By the way: when i talk about domain models, i dont mean that we are following the DDD principles (which we probably should but thats another topic i guess)
Vagif Abilov
@langebo When working with actors it's best no to think in OOP terms. It's all about messages. When you build a state of AppointementActor from its events you are replaying messages that were received and persisted for the given AppointmentActor persistence ID. Events come from the event journal (event store). If AppointementActor state should include more than that (e.g. a number of ResourceActor events), then you have to arrange it yourself. This is why I'd go for storing all contained events under the same persistence ID (corresponding to the aggregate root, in your case it will be AppointmentActor).
James Hulse
hi all, I worked on an akka.net system 2 years ago but have nearly forgotten everything I learned. trying to get back up to speed but can't seem to find the really great article on the "work pulling pattern" that I had back then. Anybody know which one I might be referring to or where I can find something similar now? cheers
Aaron Stannard
push and pull?
but we don't cover it there
Alexandr Baranovskyi
@Aaronontheweb is there any documentation on how Lighthouse should be started and configured?
It seems like there's a lot of custom cases that aren't described anywhere (seed-node cycle, as I wrote in the previous message, and constant gateway association errors if lighthouse referenced by another lighthouse starts later than latter)
I'm using NLog to log errors in my akka app. I would like to be able to add additional data to the exception before it logs...including the message value. I was using PreRestart override for this which works, but I noticed the error often gets logged before that event is triggered so sometimes the extra data is not included. Where would be the appropriate place to do this kind of logging? Do I need a custom logger or some other approach?
Is there a way to send a "global" message in akka? as in notify every known actor in the system.
Arjen Smits
@atresnjo take a look at actorselections and how addresses work: https://getakka.net/articles/concepts/addressing.html#querying-the-logical-actor-hierarchy
Yeah I can know that I can do it myself, question was more like if there's something already inbuilt.
thanks tho

Is there any gotcha's when using Cluster Discovery Consul + Routing?

Here is my deployment config:

            /other {
                router = broadcast-group
                routees.paths = ["/user/api"]
                virtual-nodes-factor = 8
                cluster {
                    enabled = on
                    max-nr-of-instances-per-node = 2
                    allow-local-routees = off
                    use-role = "other"

I have the other console application running with an actor ready for messages at /user/api

Here is the cluster config:

    cluster {
        roles = ["other"]

Logs are showing that the nodes are up and running with the correct roles.

But the when telling /user/other a message it keeps deadlettering. Anyway to debug what's going on?

Oh... I'm having no issues with routing when I'm broadcasting to the same role + enabling allow-local-routees. But once scaling up I'm sure the external routees wouldn't work :(
^^^^^^^^^ Nevermind.. Found my issue..
Was creating the ActorSystems with different names. Once I figured it out, started working like a charm. :D
Doe anyone knwo why this can occur in a cluster? I see a lot of these in my logs
[ERROR][12/2/18 4:18:21 PM][Thread 0007][remoting] SkipLastField called on an end-group tag, indicating that the corresponding start-group was missing
Cause: Google.Protobuf.InvalidProtocolBufferException: SkipLastField called on an end-group tag, indicating that the corresponding start-group was missing
Can my MsgPack serialization be the reason that message in protobuf is raised? All my own messages are serialized in MsgPack, but I can't find a lot googling this error.
Hello, can maybe someone Confirm that the first example releated to this: https://getakka.net/articles/intro/use-case-and-deployment-scenarios.html using FluentConfig is absolete and have to be updated ?
How can i configure hyperion serialization?
I followed getakka.net serialization document, but it doesn't work.
As you can see, matched serializer is still NewtonSoftJsonSerializer
Jack Wild
does anybody know if it is possible to check if all actors in an actor system have an empty mailbox?
Bartosz Sypytkowski
@HIPERCUBE how are you attaching this HOCON config to your actor system? (Also: are you using .net core or full framework?)
Chris G. Stevens
I do want to give a shout out to the Akk.Net team. You all have done an amazing job.
I've been using Akka.Net for over 3 years and just really enjoy working with Actors, messaging and SignalR.
Here is my latest creation - https://github.com/cgstevens/FileProcessor
Aaron Stannard
@cgstevens wow! that is really cool
and this can work simultaneously across multiple machines?
Chris G. Stevens
@Aaronontheweb Thanks Aaron!
Well I have only been working on my system but I did run a quick test and my work was in a different domain as well as a copy of my WindowsMonitor, so yes to answer your question :)
I am trying to get a project together that demonstrates all of the AWESOME tools you all have built.
So right now in the solution contains the following services:
Lighthouse - service discovery
Processor (EastCoast/WestCoast) - This is to simulate the Singleton Actor, there can only be one just like highlander :) Basically keeps track of jobs.
Worker (EastCoast/WestCoast) - This demonstrates the ClusterRouterPool and distributes the reading of a line.
WIndowsMonitor - WindowsForms application that allows you to view into the cluster... (just like my other I have created)
WebMonitor - This is using SignalR to funnel message from an actor which is using PubSub Mediator to subscribe to Topics from the Processor and Worker services.
Chris G. Stevens
If anyone would love to clone my project and make sure it works that would be awesome; LOL :)
You know.. famous last words... works on my box!
Chris G. Stevens
Ohhhh if you want to run across multiple systems you will need to change the ipaddress in the hocon config to the host ipaddress.
You will need to do this with all members of the cluster so that they know how to talk to each other.
Aaron Stannard
@jackowild you'd need to write some custom code for that - using wildcard actor selections and a custom message type
@zimayel_gitlab yes, that's correct
we haven't supported that syntax in years
Ilya Komendantov

Hey guys,
I have data duplication issue when using TCP. I'm sending from "for" loop on client and reply with the same message from akka (echo).
If the message size 15 bytes + 4 for length, everything is perfect (sent 20k messages that is arrived in order and no duplication).
If message size more than that, duplications arrived. The pattern here is 1,2,3,4,2,3,4,5,6,7,8,2,3,4,5,6,7,8,9,10, ... (not always)
From my investigation the issue caused by

  1. <NetworkStream>.WriteAsync(packet, 0, packet.Length).ConfigureAwait(false) on client
  2. <Tcp.Received>.Data.ToArray() on server (akka)

I have a repro project and will send to anyone who volunteers for investigation :)

Alex Michel
Hi, is there an easy way to get count of actors my actor is currently watching? FullActorState is internal class and doesn't expose _watching.Count?