Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 23 21:29
    Aaronontheweb commented #3863
  • Oct 23 21:28
    Aaronontheweb synchronize #3863
  • Oct 23 21:18
    Aaronontheweb synchronize #4000
  • Oct 23 21:17
    Aaronontheweb commented #3964
  • Oct 23 21:17
    Aaronontheweb commented #3964
  • Oct 23 21:16
    Aaronontheweb synchronize #3964
  • Oct 23 21:12
    Aaronontheweb commented #3964
  • Oct 23 21:08
    Aaronontheweb synchronize #71
  • Oct 23 21:04
    Aaronontheweb synchronize #3973
  • Oct 23 21:00
    Aaronontheweb commented #71
  • Oct 23 20:58

    Aaronontheweb on dev

    Akka.Persistence.TCK fix - chec… (compare)

  • Oct 23 20:58
    Aaronontheweb closed #4002
  • Oct 23 20:51
    Aaronontheweb synchronize #4002
  • Oct 23 20:45
    Aaronontheweb commented #3811
  • Oct 23 20:45
    Aaronontheweb commented #3811
  • Oct 23 20:44
    Aaronontheweb labeled #4002
  • Oct 23 20:43
    Aaronontheweb milestoned #4002
  • Oct 23 20:43
    Aaronontheweb opened #4002
  • Oct 23 20:37
    Aaronontheweb synchronize #71
  • Oct 23 20:20
    Aaronontheweb synchronize #71
Vagif Abilov
@object
Sorry for being unclear, I am still in the process of getting the concept. What I roughly meant is if I need to do a Select with a functional transformation on an intermediate result. But you already explained fusing and this probably what I had in mind :-)
Marc Piechura
@marcpiechura
Great :) all the select / where / GraphDSl methods only create a blueprint of the stream, they doesn't start any actors nor is any work started until you call one of the Run methods. When you do so the materializer creates actors as needed based on your settings and graph. For example you could disable fusing and therefore every stage would run in its own actor
Vagif Abilov
@object
Makes sense, thanks!
Marc Piechura
@marcpiechura
Np
Vagif Abilov
@object
But that WebCrawler example still suspiciously looks like needing some code cleanup, but I leave this question for @Aaronontheweb :-)
Maciek Misztal
@mmisztal1980
anyone tried starting lighthouse on mono? it fails to bind for some reason :worried:
Chris Morley
@csmorley
Hi all, been googling for past few hours and stepping through source, can anyone point me in the right direction if i want to intercept calls to System.ActorOf(props); bascially i would like to control how the actor is constructed
Corneliu
@corneliutusnea
@csmorley did you try to do it via the DI? The DI can do custom construction
Aaron Stannard
@Aaronontheweb
@object yep, haven't quite finished it yet
using Streams heavily in a real project right now and that's informed my tastes somewhat
so I'll be refining it before I publish it, as well as deleting much of the old code
@mmisztal1980 I need to update it to 1.1.2 Akka
that should fix it
DNS / IPv6 stuff
Daniel D'Agostino
@dandago2_twitter
hey guys, from http://getakka.net/docs/clustering/cluster-overview I read: "NOTE: Akka.Cluster is currently a pre-release nuget package, so you'll need to set the pre flag when you install it into your applications. Akka.Cluster will be considered "fully released" once Akka.NET v1.1 ships." -- I thought both Akka .NET 1.1 and Akka.Cluster were already out, so is this just a case of outdated documentation? :)
Arjen Smits
@Danthar
yes.
You are more then welcome to do a PR :)
Daniel D'Agostino
@dandago2_twitter
I'm not sure what workflow you use for these updates :)
Arjen Smits
@Danthar
Simple. Fork the getakka.net repo. Make the changes in the .md file as needed.
Make a commit to your fork, and do a PR from there
Daniel D'Agostino
@dandago2_twitter
oh, PR works across repos on github?
I'll give it a try later, thanks :)
Arjen Smits
@Danthar
And in general this doc applies: http://getakka.net/docs/Contributing%20to%20Akka
But yeah if you fork from a repo. Github tracks that your repo is a Fork, and that it has an upstream repository linked to it. It then allows you to make a PR to that upstream repo.
Daniel D'Agostino
@dandago2_twitter
I'm reading up on clustering, and was just wondering whether it's possible to assign roles dynamically, rather than fixed from config
e.g. have something that tells a node that it needs to adopt a certain role, according to arbitrary demands
Damian Reeves
@DamianReeves

So I'm working on an application that will have Aggregate Roots like in DDD. I currently see the need to have an actor that given a message, figures out the target entity type and then "activate" the persistent actor for that given entity (by id).

In doing research I came across this statement in the Akka.Cluster.Sharding module:

Cluster sharding is useful in cases when you want to contact with cluster actors using their logical id's, but don't want to care about their physical location inside the cluster or manage their creation. Moreover it's able to rebalance them, as nodes join/leave the cluster. It's often used to represent i.e. Aggregate Roots in Domain Driven Design terminology.

Is my use a canonical example for using cluster sharding? What if I have usages of this pattern that aren't clustered but only have 1 node?

Bartosz Sypytkowski
@Horusiath
@DamianReeves you can use cluster sharding for only 1 node
Damian Reeves
@DamianReeves
Cool, does my description of my usecase fit sharding?
Bartosz Sypytkowski
@Horusiath
yes ;)
Damian Reeves
@DamianReeves
:+1:
Do you have any usage examples?
Bartosz Sypytkowski
@Horusiath
There is an example in the core repo. I think it's missing use case of passivation
but this one is present in docs
Damian Reeves
@DamianReeves
cool... thanks again
Daniel D'Agostino
@dandago2_twitter
hey guys, I'm trying a really bare-bones test of Akka.Cluster based on the documentation here: http://getakka.net/docs/clustering/cluster-overview
akka {
    actor.provider = "Akka.Cluster.ClusterActorRefProvider, Akka.Cluster"
    remote {
        helios.tcp {
            port = 8081
            hostname = localhost
        }
    }
    cluster {
        seed-nodes = ["akka.tcp://ClusterSystem@127.0.0.1:8081"]
    }
}
This doesn't actually work
but if I change both host names to localhost, or both to 127.0.0.1, it works
it looks like Akka doesn't realise that they are actually the same thing
Daniel D'Agostino
@dandago2_twitter
Another thing: If I run a standalone node with itself configured as seed node, I see no errors. If I set up a non-seed node using the aforementioned node as seed node, I get the following error:
blob
Daniel D'Agostino
@dandago2_twitter
OK disregard the last error, had the wrong actorsystem name configured
Damian Reeves
@DamianReeves
For cluster sharding it would seem that I need to keep track of the ShardRegions I've created. If I call Start(...) or StarAsync(...) twice for the same type it throws and if I call ShardRegion(type) without previously starting a type it throws... am I missing something?
Bartosz Sypytkowski
@Horusiath
@DamianReeves shard region is singleton in actor system scope, if you're using one actor system for your application, you may set shard region as static property. Also there is other method ClusterSharding.ShardRegion(typeName) which will return shard region if it exists.
Damian Reeves
@DamianReeves
I get that, but lets say I have 2 AggregateRoots: Inventory and Customer it seems I'd have 2 regions and if I added Product it would be a third, is this the wrong approach?
I'm looking to do something like this:
        ReceiveAsync<AggregateCommandEnvelope>(async envelope =>
        {
            IActorRef shardRegion;
            var aggregateType = envelope.AggregateType;
            var aggregateTypeName = envelope.AggregateType.FullName; //TODO: May need to safe guard this in a different manner
            if(!_aggregateShardRegions.TryGetValue(aggregateTypeName, out shardRegion))
            {
                shardRegion =
                    await _sharding.StartAsync(
                        aggregateTypeName, 
                        Props.Create(aggregateType),
                        ClusterShardingSettings.Create(Context.System), 
                        new ShardingMessageExtractor(10)
                    );
            }
        });
Bartosz Sypytkowski
@Horusiath
yes
in general identifier of your entity (sharded actor) is something like (string typeName, string shardId, string entityId)
Damian Reeves
@DamianReeves
Ok, so in my example the typeName I pass to the sharding.Start is a broader concept like InventoryManagementSystem